ネットワークの問題
パフォーマンスに影響することが多いもう一つの領域は、ネットワークです。 プログラムの動作についての理解が深まるほど、ネットワークがパフォーマンス・ボトルネックである可能性があるかどうかを判別しやすくなります。
プログラムがネットワーク入出力を制約している可能性が高いと思われる場合は、netstat ツールが便利です。 netstat コマンドは、ネットワーク経路、各ネットワーク・プロトコルのアクティブ・ソケット、および統計 (送受信したパケットの数など) について情報を提供します。
netstat を使用して CLOSE_WAIT 状態または ESTABLISHED 状態にあるソケットの数を確認します。 それに応じて TCP/IP パラメーターを調整して、システムのパフォーマンスを向上させることができます。 例えば、/proc/sys/net/ipv4/tcp_keepalive_timeをチューニングすると、ソケットを閉じる前にソケットがTIMED_WAIT状態で待機する時間が短縮されます。
/proc/sys/netファイルシステムを調整する場合、変更はシステムに実行されるすべてのアプリケーションに影響します。 個々のソケットまたは接続を変更するには、該当するソケット・オブジェクトで Java™ ソケット API 呼び出しを使用します。 netstat -p
または lsof コマンドを使用して、特定のソケットを所有するプロセスの PID を見つけます。 kill -QUIT <pid>
コマンドを使用して、スタック・トレースにソケット・オブジェクトの詳細を含む javacore ファイルを生成します。
TCP/IP の問題によりパフォーマンスが低下している可能性のあるプログラムを調査する場合は、ネットワークに関連する要約統計を用意すると便利です。 ハードウェアの能力についての理解が深まるほど、アプリケーションのパフォーマンスを向上させるシステム・コンポーネントのパラメーターを調整しやすくなります。 また、システム調整によってパフォーマンスが向上するのかどうか、あるいはシステムのアップグレードが必要なのかどうかを判断することもできます。