前提・実現したいこと
現在、下記の構成でAWSを運用しております。
スマホアプリ → API Gateway → Lambda(Node.js 12x) → DynamoDB
上記、Lambdaの処理において、タイムアウトが発生しております。
通常であれば、平均500msほどで関数が完了するのですが、時々、30000msでタイムアウトが発生する場合があります。
毎日約2000回ほどAPIへのアクセスがあり、3日に1回ほどの頻度で発生しております。
原因も毎回異なり、DynamoDBへ情報を取得している処理でタイムアウトが発生しているところもあれば、配列の処理をしているようなところでタイムアウトが発生している場合もあります。
時間帯もバラバラで、朝方だったり、真夜中だったりアクセス数が少ない時間帯でも発生しております。
通常、500msほどで終わっている処理で30000msかかってタイムアウトになるのは、コードの問題とも考えにくく・・・
なにか解決策を教えていただけますと幸いです。
発生している問題・エラーメッセージ
Duration: 30040.42 ms Billed Duration: 30000 ms Memory Size: 1024 MB Max Memory Used: 101 MB
該当のソースコード
タイムアウトが発生している箇所は毎回違いますが、主に下記の様な単純なGet処理でもタイムアウトが発生する場合があります。
(キャパシティーはオンデマンドに設定してあります)
const dynamoGetParams = { TableName: DYNAMO_TABLENAME, Key: { target_id: targetId, }, }; const result = await dynamo.get(dynamoGetParams).promise();
補足情報(FW/ツールのバージョンなど)
Node.js 12x