あるプロジェクトにて、いつものように朝出勤するとサポート担当者が 慌ただしく電話対応に追われていた。話を伺ってみると、昨日未明にアプリケーションサーバがシステムダウンが発生したとのこと。その場は、サーバをリブートしてシステムを復旧することができたが、原因は調査しなくてはならない。ログを解析すると、メモリリークが発生したことが原因なのはすぐに分かったが、メモリリークが発生した原因が分からない。夜間バッチの処理中にメモリリークが発生しているが、日次処理であり今までは問題なく稼働していた。急激にトランザクションデータが増加したわけでもない。 そもそも、メモリリークは何故発生するのだろうか。Javaの一番の特徴は、GC(ガベージ・コレクション)にあると言っても過言ではない。通常、開発者はメモリ管理を意識してコーディングする必要があるが、Javaに関しては開発者に代わってJVMが任意のタイミングでG
GC周りでトラブルシューティングした際の経験や、Web等で調べたことをまとめてみる。 前提 ・JVMは、Sun Javaを想定。(他は使ったことないです。。。) ・Sun Java 1.5-1.6を想定。 目標 マイナーGC、Full GCそれぞれが頻発することなく、かつそれぞれの実行時間を1秒未満に抑えること。 マイナーGCは1秒未満どころではなく、もっと短くなるべき。どれくらいが理想かは?(0.1秒未満ぐらいを目指したい?) 連続した負荷状態(想定されるピークアクセス)でもOutOfMemoryErrorが発生しないこと。 理想的な状態は、上記に加えて、Full GCの発生が低頻度であること。 具体的には、できるだけマイナーGCで短命オブジェクト(1回使ったらもう使わないようなオブジェクト。逆にセッションオブジェクト等は長命オブジェクトとなる)を破棄させて、短命オブジェクトが、Tenu
高負荷なのに片方のサーバにだけ余裕が……なぜ?:Linuxトラブルシューティング探偵団(1)(1/4 ページ) NTTグループの各社で鳴らした俺たちLinuxトラブルシューティング探偵団は、各社で培ったOSS関連技術を手に、NTT OSSセンタに集められた。普段は基本的にNTTグループのみを相手に活動しているが、それだけで終わる俺たちじゃあない。今回からOSSを扱ってきて遭遇したトラブルを解決する過程を@ITで連載していくぜ。 ソースコードさえあればどんなトラブルでも解決する命知らず、不可能を可能にし、多くのバグを粉砕する、俺たちLinuxトラブルシューティング探偵団! 助けを借りたいときは、いつでもいってくれ! OS:高田哲生 俺はリーダー、高田哲生。Linuxの達人。俺のようにソースコードレベルでOSを理解している人間でなければ、百戦錬磨のLinuxトラブルシューティング探偵団のリーダ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く