「十分なスペースがありません」と主張する IOExceptions をスローしているリモート Solaris マシン上の Tomcat にデプロイされた Java Web アプリケーション (WAR) があります。数日かけてこの問題を痛烈に調査した結果、Solaris が親プロセスと子プロセスの両方をシステムのスワップ領域に配置する必要があるコードでプロセスの分岐が発生していることがわかりました。両方のプロセスが含まれています。これは、私ができるよりも雄弁に/知的に何が起こっているかを説明する記事です。しかし、それは間違いなく犯人です。
そのため、システム管理者にチケットを提出してスワップ領域を増やす必要がありますが、必要な領域を把握するのに苦労しています。JConsole を使用してサーバーのメモリ使用量をプロファイリングできますが、VM Summary
タブで、使用済み/使用可能なスワップ領域の情報は、JConsole の起動時にのみ読み取られ、更新されないようです。これにより、この分岐/メモリの問題を再現している間、JConsole を使用してリアルタイムのスワップの使用状況を確認することができなくなります。
私がアクセスできる唯一のサーバーモニターは、と呼ばれるものprstat
です(私は と に慣れてtop
いnmon
ます)。
システムに特定の番号を与える必要があります (つまり、myserver.net のスワップ領域を 250M 増やしてください)。この番号を取得するにはどうすればよいですか? サーバーは Java 1.6u25 で実行されているため、私が認識していない Java ツールや、使用できる可能性のある Solaris プロファイラー/モニターが存在する可能性があります。