サーバーのボトルネックを検出しようとしていますが、どこから始めればよいかを判断するのに苦労しています。クラッシュする前のマシンの症状は、接続の切断です(タイムアウト。これは、応答に時間がかかりすぎることをクライアントが確認したときに発生します。これは、サーバー側のコードでプロセッサを割り当てることができず、リクエストができなかったことを示している可能性があります。処理されません)およびメモリ不足の問題。後者のエラーコードは実際にはJVMによってエラーログに示されますが、RAMと使用可能なCPUの不足の両方が同時にボトルネックになっているとは信じられません。(以前のクラッシュの時代には、上記の方法で一貫してクラッシュしていました。)独自の社内サーバーコードがあり、Apacheや他のコードに類似しているとは分類しません。
少し時間をかけて、ローカルである程度制御されたテストを作成したいと思います。サーバーを実行していて、ローカルサーバーからさまざまなものを要求するプログラムを作成しています。RAM / CPUを監視するための良い方法は何ですか?現在JavaのVisualVMを使用していますが、いくつかのテストでハンマーを叩くとモニターが応答しなくなります。
そこにあるアイデアは大歓迎です。私が述べたように、私はさらにトラブルシューティングを行うために、できるだけ多くの有用なデータを取得しようとしています。一般に、このようなボトルネックの問題が発生した場合、取るべき一般的な戦略は何ですか?ライブサーバーはすべてWindowsServer2008で実行されています。Javaのバージョンは7.03です。私のローカルボックスは、Java7.03を搭載したWindows7を実行しています。あまり多くの仮定をしたくはありませんが、Server2008とWindows7はかなり似ていると仮定するのが妥当だと思います。(OSアーキテクチャは同じです。)それを除けば、私のローカルボックスにはサーバーと同じハードウェアがあります。