私はGPSデバイス追跡ソフトウェアに取り組んでいます。我々はJava TCPリスナを介して私たちのサーバと通信する約3000のデバイスを持っています。デバイスとの接続が確立されると、デバイスとの接続が切断されることはありません。接続を再度作成するには時間がかかるためです。
TCPリスナーを実行すると、CPU使用率が99%向上し、システムが不安定になります。 A. TCPリスナーをJavaに書き込んで、3000個のデバイスに対して3000を超えるスレッド接続を処理できるようにします。 B. CPU使用率を最小限に抑えるためです。
ありがとうございます。
親愛なるポール、返信ありがとうございます。しかし、私たちのTCPサーバーと通信している3000 GPSデバイスがあり、一度に1つのスレッドを作成してすべての着信要求を処理することはできません。私はどのようにすべての要求を処理するサーバーを設計することができ、高性能でなければなりませんkn0wしてください。 – geekIndiana
Huch、このコメントビューで説明するのは難しい...一般的なルールは次のとおりです。システムがI/Oを実行している間にCPU時間を費やさず、要求データを処理するためにCPU時間を費やすだけです。私は.NETのishの答えを避けようとしましたが、私はできません:そこには、I/Oにバインドされた各リソースに、BeginX/EndXのメソッドがあります。例えば 'Socket'は、I/Oサブシステム要求が処理されるまで待っている間にCPU時間を消費しない' BeginReceive/EndReceive'と 'BeginSend/EndSend'プロトコルを提供します。 @ D.Shawleyさんの答えがあなたの正しい道を指していないのですか? –
親愛なるポール、私はMINAが役立つかどうかはわかりません。私たちのデバイスはパケットを別のフォーマットで送信し、MINAはエンドキャラクタフォーマットがデータを処理することを期待しています。だから私は確信していない、私は私の聴取者がすべての着信要求を読むことができる必要があります期待しています。ありがとう – geekIndiana