CPU高負荷とメモリ不足によるサーバー停止の原因調査

質問

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

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

【背景】

本番環境でサーバーが突然停止するトラブルが起きた。CPU使用率が急上昇してから約17分後にシステムがダウンし、原因を特定したい。



1. 事象

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

OutOfMemoryError

症状の説明:

2024-03-29 16:12:43にCPU使用率が急激に上昇し、高負荷状態が継続した。その後、2024-03-29 16:29:51にサーバーが停止した。

2. 発生条件

アクセスログを見ると、1秒あたりのリクエスト数が通常の目安である30を大きく超え、60~70程度に達していた。この高負荷状態が原因なのか、他に要因があるのかを知りたい。

回答

1. 原因

技術的な原因:

アプリケーションサーバー(Resin)でOutOfMemoryErrorが検出され、自動的に再起動処理が実行されたことでサーバーが停止しました。

技術的要因の分析:

・要因1:16:05~16:25の時間帯に通常より高いアクセス負荷が発生 → リクエスト処理が集中し、システムリソースが圧迫された
・要因2:1秒あたり60~70件のリクエストが継続的に発生 → 推奨値(30件/秒)を大幅に超過し、処理キューが蓄積
・要因3:CPU使用率が16:12:43から急上昇 → プロセス処理が追いつかず、メモリ消費が加速
・要因4:メモリ使用量が限界に達した → OutOfMemoryErrorが発生し、Resinが異常を検知
・要因5:Resinの自己保護機能が作動 → 16:29:51に再起動処理が実行され、サービスが一時停止

根本的な要因:

通常の想定を超える高負荷アクセスが継続的に発生したことで、メモリリソースが枯渇し、アプリケーションサーバーが限界に達したことが根本原因です。ただし、リクエストログの解析では、OutOfMemoryErrorを引き起こした特定の処理を特定することはできませんでした。

2. 対応方法

根本解決方法:

現在の情報だけでは原因の完全な特定が困難なため、事象を再現させた上でヒープダンプを取得し、メモリ使用状況を詳細に分析する必要があります。

1. 同様の高負荷状態を意図的に再現する環境を準備
2. ヒープダンプ取得の設定を有効化
3. 負荷テストを実施し、OutOfMemoryError発生時のヒープダンプを取得
4. 取得したヒープダンプを解析ツールで分析し、メモリリークや大量メモリ消費の原因を特定

暫定対処方法:

・アクセス集中が予想される時間帯の監視を強化し、早期にアラートを検知できるようにする
・処理時間の長いジョブやバッチ処理が同時実行されていないか確認し、実行タイミングを分散させる
・カスタマイズ箇所がある場合は、その処理がメモリを大量消費していないか見直す

参考情報:
リソース不足による問題の場合、解決手段の一つとしてプラン変更もご検討いただけます。詳細は以下のドキュメントをご確認ください。 ・標準リソースプラン:https://aws.accel-mart.com/service_manual/texts/03_specifications/02_resource_plans/01_standard_resource_plans.html
・Gearプラン:https://aws.accel-mart.com/service_manual/texts/03_specifications/02_resource_plans/02_gear_resource_plans.html

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

1. サーバー停止時刻(16:29:51)を起点に、システムログを遡って確認
2. Resinのログを解析し、OutOfMemoryErrorの発生を確認
3. CPU使用率の推移を監視データから抽出し、16:12:43から急上昇していることを特定
4. アクセスログを時系列で解析し、1秒あたりのリクエスト数を算出
5. im-log-stats(https://github.com/cwan/im-log-stats)を使用してリクエストログを詳細分析
6. 16:05~16:25の時間帯が他の時間帯と比較して高負荷であることを確認
7. 特定の処理やリクエストパターンとOutOfMemoryErrorの相関関係を調査したが、明確な因果関係は特定できず
8. 現状の情報では原因の完全特定が困難と判断し、ヒープダンプ取得による詳細分析が必要と結論

補足情報:
メモリ使用率上昇に関する詳細は、以下のドキュメントもご参照ください。
・メモリ使用率が上昇しています。対応方法を教えてください:https://cloud.intra-mart.support/hc/ja/articles/21579774858265
・Accel-Mart Plus お問い合わせガイド - 障害調査:https://aws.accel-mart.com/support_inquiry_guide/texts/inquiry_process/support_category_decision/failure_analysis.html
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
Powered by Zendesk