java - 高并发实时系统涉及到多线程处理,这样合理么?
PHPz
PHPz 2017-04-18 09:18:03
0
2
335

智能硬件设备,需要实时长链接向服务器发送数据,这个设备只要插上电就会向服务器上传数据。
目前的设计方案是服务器接收一个请求,开一个线程。但是刚才用jMeter测试,发现有100个并发线程CPU就跑140%+了。

就想到了用线程池,但是如果用线程池,如果池子里只有100个线程,我有200个设备接入。是不是就意味着有100个设备连不上。

谢谢大家。

PHPz
PHPz

学习是最好的投资!

全員に返信(2)
黄舟

デバイスがサーバーにデータを送信するとしか書いていないのですが、サーバーがデータをデバイスにプッシュするとは書いていません。この場合、HTTP プロトコルを使用することは不可能ではありません。双方向の要求があるが、データが一定の間隔でアップロードされ、リアルタイムで送信されない場合は、ノンブロッキング IO を使用してこれを実現することを検討できます。これにより、IO 応答が最下層に送信されます。 Java 層は、処理用のスレッドを作成するだけで済むため、スレッドのオーバーヘッドを軽減できます。実際に 200 台のデバイス接続がある場合、200 台のデバイスが同時にアップロードし、データを継続的に送信することになります。唯一の方法は構成をアップグレードすることです。他の方法は役に立ちません。

いいねを押す +0
PHPzhong

golang のコルーチンの概念を検討できます

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート