質問
⚠️ この事例は公開されてから1年以上経過しています。 情報が古い可能性がありますので、ご注意ください。
🕓 事例公開日 : 2024-04-23
【背景】
開発環境システムにアクセスできなくなり、業務に支障が出ている状況です。1. 事象
エラーメッセージ・スタックトレース:
Service UnavailableThe server is temporarily unable to service your request due to maintenance downtime or capacity problems.Please try again later.
症状の説明:
ログイン画面のURLへアクセスすると、ログイン画面が表示されず、上記のメッセージがブラウザに表示されてしまいます。運用管理サイトで確認すると、システムステータスは「実行中」と表示されていますが、再起動を試みても、インスタンス一覧では「起動中」となっているのに対し、システム一覧では「サーバ起動停止中」という状態になっています。2. 発生条件
開発環境システムにて、2024年4月1日11時40分頃から発生しました。回答
1. 原因
技術的な原因:
ディスク容量が限界に達したことで、ミドルウェアが正常に停止できない状態となり、システム全体が利用不可能になりました。技術的要因の分析:
・要因1:特定のSQLエラーが繰り返し発生 → 大量のスタックトレースがログファイルに記録される・要因2:エラーログが継続的に出力される → exception_*.log ファイルが170万個以上生成される
・要因3:jvmログファイルが10分ごとにローテーション → 各ファイルが300MB以上に肥大化
・要因4:ディスク使用率が急激に上昇 → 空き容量が枯渇してシステムが動作不能に
・要因5:ミドルウェアの停止処理が実行できない → 再起動操作が正常に完了しない
根本的な要因:
データ型の不一致によるSQLエラー(ERROR: column "start_number" is of type numeric but expression is of type character varying)が継続的に発生し、その結果として出力される大量のエラーログがディスク容量を圧迫したことが根本原因です。2. 対応方法
根本解決方法:
1. アプリケーション側でSQLエラーの原因となっているデータ型の不一致を修正してください2. 該当のSQL文において、character varying型の値をnumeric型のカラムに挿入する際は、適切な型変換(キャスト)を行うようにしてください
暫定対処方法:
ディスク容量が逼迫した場合は、以下の2つの方法で対処できます。方法A:肥大化したログファイルの削除
1. サポート窓口へ問い合わせを行い、削除対象ファイルのリストを取得してください
2. 削除対象ファイルの内容を確認し、削除可否を判断してください
3. サポート窓口へ削除作業を依頼してください
方法B:バックアップからのリストア
1. 運用管理サイトにログインしてください
2. リストア機能を使用して、問題発生前のバックアップからシステムを復元してください
3. 詳細な手順は以下のドキュメントをご参照ください
https://aws.accel-mart.com/am_document/texts/system_operation/restore.html
3. 原因究明に至るまでの調査方法
1. 運用管理サイトでシステムステータスを確認し、インスタンスとシステムの状態に不整合があることを確認2. ミドルウェアの停止処理が正常に実行できない状態であることを特定
3. ディスク使用率の推移を確認し、2024年4月1日11時40分頃から急激に上昇していることを発見
4. ディスク容量を圧迫しているファイルを特定(exception_*.log が170万個以上、jvmログが300MB以上のファイル多数)
5. ログファイルの内容を分析し、SQLエラー(データ型不一致)が大量に記録されていることを確認
6. エラーメッセージから、numeric型のカラムにcharacter varying型の値を挿入しようとしていることが原因と判明
7. 削除対象ファイルのリストを作成し、お客様に確認を依頼
8. お客様の承認後、ログファイルの削除作業を実施
9. ミドルウェアが正常に起動したことを確認し、システムが復旧したことを検証