2011-12-20 2 views
1

ソケットプログラミングに基づいてJavaクライアントサーバーアプリケーションを開発しました。私は現在、複数のクライアントを同時にサーバーに接続してテストしています。私のサーバーでは、私は日食、クロム、mysqld、memcached、mysqlの管理者、mysqlのクエリ、私のJavaサーバー、および約5の同時クライアントを実行しています。要求と応答のペイロードは0.5kb以下です。クライアントごとに約5リクエスト。私は1つのクライアントを実行すると、問題はありません。同時に5を実行すると、サーバーが応答していないように見えます。Javaクライアントサーバープログラミング、cpu maxing out

今、私の質問です。私はバニラのunbuntu 32ビットをインストールしています。ネットワーキングのヘルプを微調整しますか?それとも、おそらく自分のアプリ自体に問題があると思いますか?

私は4GBのRAM、ubuntu 32bitのデュアルコアプロセッサを実行しています。

私は読んで良いブログやリンクを探しています。

編集 深い調査で、私のサーバーがリクエストを取得していないことがわかりました。しかし、私のクライアントはそれを送信しています。とにかく、サーバーがリクエストを受信したかどうかをチェックし、ドロップすることを決めました。

答えて

1

問題の性質は、サーバー上で並行処理が誤っているようです。サーバー上にオブジェクトが適切にロックされていますか?デッドロックはありませんか?あなたのコードはスレッドセーフですか?

同時に5件のリクエストは何もありません。Chromeの5つのタブを開くだけで表示されます。

+0

はい、これが私の考えです。私はwiresharkスニフを行い、私の要求がサーバーに届いていることに気づいた。 Ack'sがあります。しかし、何らかの理由で、サーバー側のソケット/インストリームが要求オブジェクトを取得していません。はい、スレッドセーフです。私は正しい場所にロックしています。私は他の要求/応答を持っています。この1つは、serversocket.instreamがピックアップしていないことを要求します。どんなヒント/思考も助けてくれるでしょう。ありがとう。 – Siddharth

+0

この1つの要求は、一貫して行われません。同じ要求が時間の50%を過ぎています。 – Siddharth

+0

サンプルサーバー/クライアントのJavaコードをダウンロードし、動作しているかどうか試してみてください。機能が停止するまでテスト中にフィーチャーごとにフィーチャーを追加します。 –