Accel-Studioインポート時の504 Gateway Timeoutエラー

質問

⚠️ この事例は公開されてから1年以上経過しています。 情報が古い可能性がありますので、ご注意ください。

🕓 事例公開日 : 2024-07-23

【背景】

開発環境で大規模なAccel-Studio機能をインポートする際、処理に時間がかかるケースがある。

1. 事象

エラーメッセージ・スタックトレース:

504 Gateway Timeout

症状の説明:

Accel-Studioで規模の大きい機能をインポートすると、処理開始から約10分後に504 Gateway Timeoutエラーが画面に表示される。エラー発生後もインポート処理自体は継続しており、最終的にインポートは正常に完了している。しかし、画面上ではタイムアウトエラーが表示されるため、処理が成功したのか失敗したのか判断できない状況となっている。

2. 発生条件

・大規模なAccel-Studio機能のインポート実行時
・処理時間が10分を超える場合に発生
・複数の端末、複数のネットワーク経路(VPN経由、LAN接続)で再現
・インポート処理自体は正常に完了している

回答

1. 原因

技術的な原因:

Accel-Mart Plus基盤のロードバランサに設定されているアイドルタイムアウト値(600秒)により、処理時間が10分を超えるリクエストに対してHTTPステータスコード504が返却されています。

技術的要因の分析:

・要因1:大規模なAccel-Studio機能のインポート処理 → 処理完了まで10分以上の時間を要する
・要因2:ロードバランサのアイドルタイムアウト値が600秒に設定 → 10分を超えるリクエストに対して504エラーを返却
・要因3:ロードバランサがタイムアウトを返却した後も、バックエンドでインポート処理は継続 → 画面上はエラー表示だが実際の処理は成功
・要因4:クライアント側では504エラーのみが表示される → 実際の処理結果を画面から判断できない

根本的な要因:

Accel-Mart Plus標準サービスのロードバランサに設定されているアイドルタイムアウト値(10分)が、大規模なインポート処理の実行時間を下回っているため、処理完了前にタイムアウトが発生しています。なお、このタイムアウト値はAccel-Mart Plusサービスの標準仕様であり、変更することはできません。

2. 対応方法

処理結果の確認方法:

画面上で504エラーが表示された場合でも、実際のインポート処理は継続しています。処理結果の確認は以下の方法で行ってください。

1. マスタデータ更新ログを確認する
2. ログ内で対象のインポート処理が「成功」と記録されているかを確認する
3. 実際にインポートした機能が利用可能かを動作確認する

マスタデータ更新ログの詳細については、以下のドキュメントをご参照ください。
https://document.intra-mart.jp/library/iap/public/im_core/im_log_specification/texts/specific_log/update_master_data.html

補足事項:

ロードバランサのアイドルタイムアウト値は標準サービスでは変更できません。504エラーが表示されても、バックエンドでは処理が継続しているため、上記の方法で処理結果を確認してください。

3. 原因究明に至るまでの調査方法

1. 事象発生日時の特定(リクエスト開始からタイムアウト発生までの時間差が約10分であることを確認)
2. AWS基盤のロードバランサログを確認
3. ログから以下の情報を抽出:
・リクエスト開始時刻とタイムアウト発生時刻の差分が約10分であることを確認
・HTTPステータスコード504が記録されていることを確認
4. ロードバランサのアイドルタイムアウト設定値(600秒)を確認
5. マスタデータ更新ログを確認し、インポート処理が正常に完了していることを確認
6. ロードバランサがタイムアウトを返却した後も、バックエンドで処理が継続していることを確認
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
Powered by Zendesk