質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Amazon DynamoDB

Amazon DynamoDBは、 AWS上のNoSQLデータベースサービスです。フルマネージド型のサービスで、スキーマレス、高速且つ安定性のある動作、自動的に容量を変更する自動スケーリングなどの特徴を持ちます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

1回答

1683閲覧

時々、AWS Lambda(Node.js)でタイムアウトが発生する。

Block

総合スコア0

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Amazon DynamoDB

Amazon DynamoDBは、 AWS上のNoSQLデータベースサービスです。フルマネージド型のサービスで、スキーマレス、高速且つ安定性のある動作、自動的に容量を変更する自動スケーリングなどの特徴を持ちます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2021/05/11 00:37

前提・実現したいこと

現在、下記の構成で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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2021/05/11 01:28

情報が足りなさすぎるので調査するしかないと思います。 タイムアウトが発生したときのログやメトリクス等々が通常字と違うところはないか等。 コールドスタートのせいかなとも思いましたが、それがいつもDurationに影響するとも限らないのでそこはわかりません。 もし原因がAWSの内部的なものであった場合問い合わせないとわかりませんが、そこが切り分けられるくらいは調査が必要です。
guest

回答1

0

私も似たような状況に遭遇しました。

タイムアウト時間を延ばしてみたらどうなるでしょうか?
私の場合は 4 分後に処理が完了するようになりました。
(深追い調査する時間もないため、ひとまずそれで我慢しています。。)

AWS サポートに問合せたところ、考えられる可能性としては、ネットワークの一時的な問題の可能性があるとのことで、
その場合はリトライを調整するなどの対策が考えられます。

実際にリクエストに要した時間の計測には X-Ray が使えるとのことです。

AWS X-Ray で AWS Lambda を使用する - AWS Lambda
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/services-xray.html

AWS でのエラー再試行とエクスポネンシャルバックオフ - AWS 全般のリファレンス
https://docs.aws.amazon.com/ja_jp/general/latest/gr/api-retries.html

回答にはなっていませんが、解決の参考になれば幸いです。

投稿2021/05/15 04:55

yh1224

総合スコア653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問