非稼働時間帯のメモリ使用率80%超過の原因調査

質問

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

🕓 事例公開日 : 2025-04-15

【背景】

今後のユーザー数増加に向けて、メモリ増強の必要性を判断するため、非稼働時間帯のメモリ使用率が80%を超えている原因を特定したい。



1. 事象

症状の説明:

非稼働時間(18:00以降)にメモリ使用率が80%を超過する現象が発生している。該当時間帯のrequestログを確認すると、ELBの死活監視のみが記録されており、systemログも18:00以降は出力されていない状況。



2. 発生条件

・非稼働時間帯(18:00以降)
・特定の日時(2月14日)に一時的な超過を確認
・毎週日曜6:00頃にも負荷上昇が発生

回答

メモリ使用率についての基本的な見解

最初にお伝えしたい点として、メモリ使用率が一時的に80%を上回ったとしても、特にJavaベースのアプリケーションでは、それだけで直ちに異常とは言えません。
JVM環境でガーベジコレクション(GC)が正常に機能し、不要なオブジェクトが適切に解放されていれば、実運用への影響は限定的と考えております。

ただし、GC実行後も使用率が高止まりする状況が見られる場合は、メモリリークやキャッシュ管理上の課題などが潜んでいる可能性があるため、詳細な調査をご検討いただくことをお勧めいたします。

将来的なメモリ容量の充足性については、お客様環境で負荷テスト等を実施していただき、実際に必要となるメモリ量を算出いただくことが必要です。

具体的には、以下のような検証をご検討ください:

- メモリ消費の大きな処理を反復実行し、ピーク時の使用状況を計測する
- 想定されるユーザ数やリクエスト数を模した負荷をかけ、実際の業務に近い環境を構築する
- 特定処理の実行前後でメモリ使用量を測定し、増加傾向を把握する

これらの検証結果に基づき、キャパシティ設計を進めていただくことを推奨いたします。

今後追加される処理によるメモリ使用増加が懸念される場合には、該当処理の実行前・実行中・実行後それぞれでメモリ使用量を測定することで、定量的な影響把握が可能です。

メモリ消費元の特定手法について

どの処理が主にメモリを消費しているかを把握するには、以下の手法が有効と考えられます。

- JVMのヒープダンプ、スレッドダンプを取得し、オブジェクトの配置状況や生成元を分析する
- 処理実行の前後でメモリ使用量を取得し、その差分を確認する

JVMの仕組み上、「どの処理がどのオブジェクトを生成したか」という情報を常時保持しているわけではないため、処理単位での正確なメモリ使用量は「推定値」となることが一般的です。処理ごとの影響を詳しく知りたい場合は、対象処理を単独で実行してメモリ変化を観測する方法をご検討ください。

なお、これらの詳細な調査・分析は弊社のサポート対象外となっておりますため、具体的な実施手順についてはご案内できかねます。
技術書籍やWeb上の情報などをご参照いただければ幸いです。

Accel-Mart Plus環境向けには、ヒープダンプおよびスレッドダンプを取得するための専用ツールをご提供可能です。ご入用の際はお申し付けください。

ご提供情報に基づく確認内容

以上を前提に、改めてご回答させていただきます。
お問い合わせいただいた非稼働時間帯のメモリ使用状況につきまして、弊社でも確認を実施いたしました。

ご共有いただいたメモリ使用率グラフを確認したところ、一時的に80%を超過している箇所が確認されましたが、それ以外の日時では明確な超過は見られませんでした。

また、非稼働時間帯(18:00以降)において、メモリ使用率が継続的に上昇する傾向も確認されませんでした。

なお、メモリ使用率上昇タイミングについて、同時間帯のrequestログを確認したところ、特定のURLに対するリクエストが実行されておりましたので、詳細な処理内容についてはお客様側でもご確認いただければと存じます。

また、毎週日曜6:00頃の負荷上昇につきましては、アンチウィルス(ClamAV)の定期スキャンによるものと推察されます。
以下のドキュメントもご参照ください。

Accel-Mart Plus サービス仕様書 - アンチウィルス(ClamAV)
https://aws.accel-mart.com/service_manual/texts/03_specifications/05_other_options/03_anti_virus.html

その他の日時におけるメモリ使用率は概ね65%前後で推移しており、現時点でメモリリーク等の兆候は特に見られません。
また、毎日0:00に実施されるオフラインバックアップに伴うインスタンス再起動により、メモリが初期化されている点も、安定運用に寄与していると考えられます。

現状の総合判断

ご提供いただいた情報および弊社での確認結果を総合すると、現状では運用上の問題は特に発生していないと判断しております。
ただし、今後の運用において懸念事項等がございましたら、可能な範囲でサポートさせていただきますので、遠慮なくお問い合わせください。

Accel-Mart Plus サービスサポート窓口の対応範囲については、以下をご確認ください。
https://aws.accel-mart.com/support_inquiry_guide/texts/inquiry_process/support_range.html

以上でございます。
何卒よろしくお願いいたします。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
Powered by Zendesk