質問
⚠️ この事例は公開されてから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. ロードバランサがタイムアウトを返却した後も、バックエンドで処理が継続していることを確認