2017-02-05 3 views
0

私は、Queue-triggered関数をいくつか使ってNode.jsにAzure関数アプリケーションを持っています。Azure機能何もせずにタイムアウトに達する

機能ログでタイムアウトが2回発生するまで、これらはうまくいっていました。 その時点から、私のトリガされた機能は実際に何もしていません。実行時間を示すのコードの最初の行を実行する前に、ただちにをタイムアウトさせます。context.log()という表現です。これの原因である可能性がありますどのような

LogOutput

+0

リサイクルインスタンスを試してみましたか? – 4c74356b41

+0

私のApp Serviceを再起動しようとしましたが、役に立たないようです。 – Schaemelhout

答えて

1

紺碧のポータルで機能のストレージアカウントを確認すると、ファイル監視のアクティビティーが非常に高くなる可能性があります。

これはAzureファイル間のやりとりのために、大きなnode_modulesツリーを必要とするためです。モジュールが一度要求されると、モジュールはキャッシュされているので、関数はすぐに実行されますが、これらのタイムアウトは関数appをtimeout - > restartループに投げることがあります。

これに関する多くの議論がありますが、1つの可能な改善(サーバーサイドモジュールでwebpackを使用)hereがあります。

他の可能性:

  • ノードモジュールの減少数消費計画の代わりに専用の
  • 可能動き(それは良好な性能を有している別のファイルシステム上で実行される)
  • 使用C#やF#の場合これらの制限に悩まされているものはありません
+0

「モジュールが一度必要になると、モジュールがキャッシュされているので機能はすぐに実行されます」この問題はランダムに発生し始めたので、既にキャッシュされているはずですか?私は私のストレージアカウントが私に相当な金を払っているのを見ています。それは 'node_modules'にも関係しますか?彼らは常にモジュールをリロードしていますか? – Schaemelhout

+0

はい。タイムアウトに達すると、エラーがあるとみなされるので、Azure関数のホストは再起動します。ホストを再起動した後は、モジュールをリロードする必要があります(これは、機能コードの変更、機能アプリの再起動後に発生する可能性があります)。キャッシュは、ノードプロセス自身が要求呼び出しで実行します(再起動するとそのプロセスが終了します)。 –

+0

私は見る...洞察力ありがとう!私の機能を専用プランに移行するのは簡単ですか? – Schaemelhout

関連する問題