私は、Queue-triggered関数をいくつか使ってNode.jsにAzure関数アプリケーションを持っています。Azure機能何もせずにタイムアウトに達する
機能ログでタイムアウトが2回発生するまで、これらはうまくいっていました。 その時点から、私のトリガされた機能は実際に何もしていません。実行時間を示すのコードの最初の行を実行する前に、ただちにをタイムアウトさせます。context.log()
という表現です。これの原因である可能性がありますどのような
?
私は、Queue-triggered関数をいくつか使ってNode.jsにAzure関数アプリケーションを持っています。Azure機能何もせずにタイムアウトに達する
機能ログでタイムアウトが2回発生するまで、これらはうまくいっていました。 その時点から、私のトリガされた機能は実際に何もしていません。実行時間を示すのコードの最初の行を実行する前に、ただちにをタイムアウトさせます。context.log()
という表現です。これの原因である可能性がありますどのような
?
紺碧のポータルで機能のストレージアカウントを確認すると、ファイル監視のアクティビティーが非常に高くなる可能性があります。
これはAzureファイル間のやりとりのために、大きなnode_modules
ツリーを必要とするためです。モジュールが一度要求されると、モジュールはキャッシュされているので、関数はすぐに実行されますが、これらのタイムアウトは関数appをtimeout - > restartループに投げることがあります。
これに関する多くの議論がありますが、1つの可能な改善(サーバーサイドモジュールでwebpackを使用)hereがあります。
他の可能性:
「モジュールが一度必要になると、モジュールがキャッシュされているので機能はすぐに実行されます」この問題はランダムに発生し始めたので、既にキャッシュされているはずですか?私は私のストレージアカウントが私に相当な金を払っているのを見ています。それは 'node_modules'にも関係しますか?彼らは常にモジュールをリロードしていますか? – Schaemelhout
はい。タイムアウトに達すると、エラーがあるとみなされるので、Azure関数のホストは再起動します。ホストを再起動した後は、モジュールをリロードする必要があります(これは、機能コードの変更、機能アプリの再起動後に発生する可能性があります)。キャッシュは、ノードプロセス自身が要求呼び出しで実行します(再起動するとそのプロセスが終了します)。 –
私は見る...洞察力ありがとう!私の機能を専用プランに移行するのは簡単ですか? – Schaemelhout
リサイクルインスタンスを試してみましたか? – 4c74356b41
私のApp Serviceを再起動しようとしましたが、役に立たないようです。 – Schaemelhout