高并发实时系统涉及到多线程处理,这样合理么?

发布于 2022-09-02 23:37:30 字数 199 浏览 34 评论 0

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

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

谢谢大家。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏闹i 2022-09-09 23:37:30

我看到你只写到设备要向服务器发送数据,没有写到服务器会推送数据到设备,如果只是这样,那用HTTP协议也并非不可以。如果有双向的需求,但是数据上传是有一定间隔的,并不是实时都在传送,那可以考虑使用非阻塞IO来实现,这样把IO响应做到系统底层去,而Java层只要再有数据传送的时候建立线程来处理即可,可以减少线程开销。如果真的是200个设备连接就会是200个设备同时上传并一直不断的传递数据,那只能升级配置,其他方法反倒费力不讨好。

瑕疵 2022-09-09 23:37:30

可以考虑golang的协程概念

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文