智能硬件设备,需要实时长链接向服务器发送数据,这个设备只要插上电就会向服务器上传数据。目前的设计方案是服务器接收一个请求,开一个线程。但是刚才用jMeter测试,发现有100个并发线程CPU就跑140%+了。
就想到了用线程池,但是如果用线程池,如果池子里只有100个线程,我有200个设备接入。是不是就意味着有100个设备连不上。
谢谢大家。
学习是最好的投资!
デバイスがサーバーにデータを送信するとしか書いていないのですが、サーバーがデータをデバイスにプッシュするとは書いていません。この場合、HTTP プロトコルを使用することは不可能ではありません。双方向の要求があるが、データが一定の間隔でアップロードされ、リアルタイムで送信されない場合は、ノンブロッキング IO を使用してこれを実現することを検討できます。これにより、IO 応答が最下層に送信されます。 Java 層は、処理用のスレッドを作成するだけで済むため、スレッドのオーバーヘッドを軽減できます。実際に 200 台のデバイス接続がある場合、200 台のデバイスが同時にアップロードし、データを継続的に送信することになります。唯一の方法は構成をアップグレードすることです。他の方法は役に立ちません。
golang のコルーチンの概念を検討できます
デバイスがサーバーにデータを送信するとしか書いていないのですが、サーバーがデータをデバイスにプッシュするとは書いていません。この場合、HTTP プロトコルを使用することは不可能ではありません。双方向の要求があるが、データが一定の間隔でアップロードされ、リアルタイムで送信されない場合は、ノンブロッキング IO を使用してこれを実現することを検討できます。これにより、IO 応答が最下層に送信されます。 Java 層は、処理用のスレッドを作成するだけで済むため、スレッドのオーバーヘッドを軽減できます。実際に 200 台のデバイス接続がある場合、200 台のデバイスが同時にアップロードし、データを継続的に送信することになります。唯一の方法は構成をアップグレードすることです。他の方法は役に立ちません。
golang のコルーチンの概念を検討できます