私はPHPでソケットサーバを構築しようとしましたが、PHPでマルチスレッド機能が不足しているため、サーバに接続がロードされていると300接続)、サーバーは非常に遅くなります。javaソケットサーバkeep aliveの実装
私はJavaに切り替えて、マルチスレッドのソケットサーバーを構築し、10秒で100接続で過負荷にしようとしました。それは勇敢にかかったと言わなければなりません。プロセス中に実際の速度が遅くなりましたが、サーバーは大丈夫だったように見えました。
私は同時に多くの接続を実行する必要があるサーバーを構築しているので、効率的にしようとしていて、ゴースト接続を開いたままにしないでください。
私は「Keep Alive」メソッドを実装しています。私の質問は以下の通りです: 私は600のオープンな接続が私のサーバで開かれていて、明らかにすべてのスレッド間でクライアントからのキープアライブメッセージを取得することさえできます。キープアライブメッセージが送信されたかどうかを確認する適切な時間は何でしょうか。 私は約2分のどこかに考えました。そのため、サーバーは忙しいと思っています。一方、私のクライアントはデータを頻繁に送信したくありません。 提案はありますか?
ソケットごとにスレッドごとにブロッキングソケットを使用していますか?私は、あなたのために仕事をしている単一スレッドから離れて、アプリケーションのパフォーマンスを大幅に向上させる必要があるので、あなたのケースではjava.nioに切り替えることをお勧めします。 – Buchi
あなたは私のサーバー側を意味しますか?もう少し詳しい情報を教えてもらえますか?今の私の主な機能のソケットを受け入れるとそれを処理する新しいスレッドを開始 –
私はSocketChannelオブジェクトとServerSocketChannelオブジェクトについて読んだことがあります。 新しいスレッドが新しいタスク(読み込み、書き込みなど)がある場所でのみ開かれているので、より良いパフォーマンスが得られます。基本的にほとんどのスレッドは、それぞれのコードよりも同時に実行されますperfromへのタスクがあるかどうかにかかわらず、接続にスレッドがあります。これは正しいですか? –