智能硬件设备,需要实时长链接向服务器发送数据,这个设备只要插上电就会向服务器上传数据。
目前的设计方案是服务器接收一个请求,开一个线程。但是刚才用jMeter测试,发现有100个并发线程CPU就跑140%+了。
就想到了用线程池,但是如果用线程池,如果池子里只有100个线程,我有200个设备接入。是不是就意味着有100个设备连不上。
谢谢大家。
智能硬件设备,需要实时长链接向服务器发送数据,这个设备只要插上电就会向服务器上传数据。
目前的设计方案是服务器接收一个请求,开一个线程。但是刚才用jMeter测试,发现有100个并发线程CPU就跑140%+了。
就想到了用线程池,但是如果用线程池,如果池子里只有100个线程,我有200个设备接入。是不是就意味着有100个设备连不上。
谢谢大家。
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
我看到你只写到设备要向服务器发送数据,没有写到服务器会推送数据到设备,如果只是这样,那用HTTP协议也并非不可以。如果有双向的需求,但是数据上传是有一定间隔的,并不是实时都在传送,那可以考虑使用非阻塞IO来实现,这样把IO响应做到系统底层去,而Java层只要再有数据传送的时候建立线程来处理即可,可以减少线程开销。如果真的是200个设备连接就会是200个设备同时上传并一直不断的传递数据,那只能升级配置,其他方法反倒费力不讨好。