高并发实时系统涉及到多线程处理,这样合理么?
智能硬件设备,需要实时长链接向服务器发送数据,这个设备只要插上电就会向服务器上传数据。
目前的设计方案是服务器接收一个请求,开一个线程。但是刚才用jMeter测试,发现有100个并发线程CPU就跑140%+了。
就想到了用线程池,但是如果用线程池,如果池子里只有100个线程,我有200个设备接入。是不是就意味着有100个设备连不上。
谢谢大家。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我看到你只写到设备要向服务器发送数据,没有写到服务器会推送数据到设备,如果只是这样,那用HTTP协议也并非不可以。如果有双向的需求,但是数据上传是有一定间隔的,并不是实时都在传送,那可以考虑使用非阻塞IO来实现,这样把IO响应做到系统底层去,而Java层只要再有数据传送的时候建立线程来处理即可,可以减少线程开销。如果真的是200个设备连接就会是200个设备同时上传并一直不断的传递数据,那只能升级配置,其他方法反倒费力不讨好。
可以考虑golang的协程概念