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

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

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

谢谢大家。

PHPz
PHPz

学习是最好的投资!

répondre à tous(2)
黄舟

Je vois que vous avez seulement écrit que l'appareil enverra des données au serveur, mais n'avez pas écrit que le serveur enverra des données à l'appareil. Si tel est le cas, alors il n'est pas impossible d'utiliser le protocole HTTP. S'il existe une demande bidirectionnelle, mais que les données sont téléchargées à certains intervalles et ne sont pas transmises en temps réel, vous pouvez envisager d'utiliser des IO non bloquantes pour y parvenir. De cette manière, la réponse IO est envoyée à la couche inférieure de. le système, et la couche Java n'a besoin que de transmettre à nouveau les données. Créez simplement un thread pour le traitement, ce qui peut réduire la surcharge du thread. S'il y a réellement 200 connexions d'appareils, 200 appareils téléchargeront en même temps et transmettront des données en continu. La seule façon est de mettre à niveau la configuration, et les autres méthodes seront ingrates.

PHPzhong

Vous pouvez considérer le concept de coroutine de Golang

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!