2017-02-05 1 views
0

두 개의 대기열 트리거 기능을 가진 Node.js에 Azure 함수 앱이 있습니다.Azure 함수는 아무것도하지 않고 시간 초과에 도달했습니다.

기능 로그에서 몇 가지 타임 아웃을 확인할 때까지 위 작업이 훌륭했습니다. 그 시점에서 트리거 된 함수 중 실제로 아무것도 수행하지 않는 함수가 있습니다. 그들은 코드의 첫 번째 라인을 실행하기 전에 까지 시간을 계 속 유지합니다. 실행 시간을 표시하는 것은 context.log()입니다.

LogOutput

은 무엇이의 원인이 될 수 있을까?

+0

리사이클링 인스턴스를 사용해 보셨습니까? – 4c74356b41

+0

내 앱 서비스를 다시 시작하려고했지만 도움이되지 않는 것 같습니다. – Schaemelhout

답변

1

하늘빛 포털에서 기능 저장소 계정을 확인하면 파일 모니터링 활동이 매우 높습니다.

이것은 Azure 파일 간의 상호 작용과 큰 node_modules 트리를 필요로하기 때문일 수 있습니다. 모듈이 일단 필요하면 모듈은 캐시되기 때문에 함수가 빨리 실행되지만,이 시간 초과는 함수 app를 timeout -> restart 루프에 던질 수 있습니다.

한 가지 가능한 개선 사항 (서버 측 모듈에서 webpack 사용)과 함께 많은 논의가 있습니다. here.

다른 가능성 : 가능하면 대신 소비 계획의 전용에

  • 이동 노드 모듈의

    • 감소 수는
    • 사용 C# 또는 F 번호 (더 나은 성능을 다른 파일 시스템에서 실행) , 이러한 제한을 겪고 있지 않다
  • +0

    "모듈이 일단 필요하면 모듈이 캐시되기 때문에 함수가 빨리 실행됩니다."이 문제는 무작위로 발생하기 시작 했으므로 내 모듈 이미 캐시 했어야 했습니까? 내 스토리지 계정에 꽤 많은 돈이 들었고 node_modules과 관련이 있습니까? 그들은 지속적으로 모듈을 다시로드합니까? – Schaemelhout

    +0

    예. 시간 초과가 발생하면 azure 함수 호스트는 오류가 있다고 가정하기 때문에 다시 시작됩니다. 호스트를 다시 시작한 후에는 모듈을 다시로드해야합니다 (기능 코드 변경, 기능 앱 재시작 후 발생할 수 있음). 캐싱은 require 호출에서 노드 프로세스 자체에 의해 수행되며 다시 시작하면 해당 프로세스가 종료됩니다. –

    +0

    알겠습니다 ... 통찰력을 가져 주셔서 감사합니다! 내 기능을 전용 계획으로 쉽게 전환 할 수 있습니까? – Schaemelhout

    관련 문제