2017-08-24 19 views
0

私はラムダ関数を呼び出すcronを10分ごとに実行するためにserverless-warmup-pluginを使用しています。ラムダ関数を解消してもレイテンシは減少しません

exports.lambda = (event, context, callback) => { 
    if (event.source === 'serverless-plugin-warmup') { 
     console.log('Thawing lambda...') 
     callback(null, 'Lambda is warm!') 
    } else { 
     // ... logic for the lambda function 
    } 
} 

これは紙の上で動作しますが、実際にcronのは、それが正常に10分ごとにそれを呼び出していてもラムダ関数を暖かく保つしません:ラムダ関数のコードは次のようになります。

ラムダが(cron以外の)別のイベントソースから呼び出されたとき、コードの実行には約2〜3秒かかります。このように実行されると、ラムダは実際にウォームアップし、400ms以下で応答を開始します。それはしばらく暖かいままです。

私はここで何が欠けていますか? official documentation状態として

+1

10分? 10分後にラムダコンテナがクールダウンするのに十分な活動はないと思います。たとえば5分または3分に減らそうとしましたか? –

+0

クラウドウォークイベントにもチェックしましたか? (実行するcronのように)。トムとして、10分でラムダが冷えるのに十分かもしれないと言いました。 これを今読んでいたのです https://medium.com/build-acl/aws-lambda-deployment-with-terraform-24d36cc86533 – vira

+0

私は問題がcronの頻度に関係しているとは思わないcronが起動してから10秒後に関数を呼び出すと、まだコールドスタート(3秒の応答時間)が経過し、次の呼び出しは400ms以下で応答します。これは、cronからの呼び出しがすべてに影響を与えないかのようです。 – cinnaroll45

答えて

0

あなたはラムダ関数コードを記述する場合は、AWSラムダは、容器を再利用しないことを選択することができるので、AWSラムダは、常にコンテナを再利用することを想定していません。 。 AWS Lambdaは、さまざまな要因によっては、既存のコンテナを再利用する代わりに、単に新しいコンテナを作成することもできます。

明らかに、それは別のイベント・ソースは、新しいコンテナを起動したとき、あなた温めコンテナが使用されていない通常のシナリオですが、アップラムダコンテナを維持しようとするために、「悪いアーキテクチャ設計」のように思えるが、。

関連する問題