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

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

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

谢谢大家。

PHPz
PHPz

学习是最好的投资!

全部回覆(2)
黄舟

我看到你只寫到設備要向伺服器發送數據,沒有寫到伺服器會推送數據到設備,如果只是這樣,那麼用HTTP協定也並非不可以。如果有雙向的需求,但是資料上傳是有一定間隔的,並不是即時都在傳送,那可以考慮使用非阻塞IO來實現,這樣把IO響應做到系統底層去,而Java層只要再有資料傳送的時候建立執行緒來處理即可,可以減少執行緒開銷。如果真的是200個裝置連線就會是200個裝置同時上傳並一直不斷的傳遞數據,那隻能升級配置,其他方法反倒費力不討好。

PHPzhong

可以考慮golang的協程概念

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!