0

私はphpでソケットサーバーを構築しようとしましたが、phpにはマルチスレッド機能がないため、サーバーに接続がロードされている場合(たとえば、300の接続が少しでも)、サーバーは非常にスロー。

私はJavaに切り替えて、マルチスレッドソケットサーバーを構築し、10秒で100接続でオーバーロードしようとしましたが、勇敢にそれを要したと言わなければなりません..自分のPC(オーバーロードを引き起こした)は、プロセスですが、サーバーは彼が大丈夫だったように見えました。

多数の接続を同時に実行するサーバーを構築しているので、ゴースト接続を開いたままにしないように効率的にしようとしています。

そこで私は「KeepAlive」メソッドを実装しています。私の質問は次のとおりです。サーバーで600の開いている接続が開いている場合、すべてのスレッド間でサーバーが実行され、Keepの存続を確認し、さらには取得するのに時間がかかることは明らかです。クライアントからのキープアライブメッセージ-キープアライブメッセージが送信されたかどうかを確認する適切なタイミングは何ですか。私は約2分だと思っていたので、サーバーはビジー状態になりたいのですが、一方で、クライアントがデータをあまり頻繁に送信したくないのです。何か提案はありますか?

4

1 に答える 1

0

600のオープン接続。キープアライブが2分120秒ごとに送信されると仮定すると、キープアライブを送信するために1秒あたり約5つのスレッドが準備されることを意味します。すべての接続が確立されていると仮定すると、5つのスレッドは、ピアからのエコーを処理した直後に再び準備が整います。つまり、キープアライブをサポートするには、1秒あたり約10スレッドを実行する必要があります。

それは取るに足らない負荷です。

クライアントがビジーの場合、それらのクライアントにはキープアライブが送信されないため、クライアントがビジー状態になると、キープアライブのロードが低下します。

あなたは大丈夫なはずのように聞こえます。

于 2012-05-11T13:54:57.780 に答える