高性能socket通信求助
需求:1台物理机上跑1000左右的client socket。(不间断接收服务器传输过来的信息)
用oio的方法,跑500个线程cpu就快满了。
研究了一下nio,发现他的轮询机制对于服务端性能提升不错。但对于客户端来说还是要1个客户端起自己的线程跑。
采用什么办法能够降低cpu的占用率呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
得看你客户端的调用要求,如果客户端允许同步调用的话,不要起单独线程,在业务线程内同步调用就行,可以类比调用百度的http openapi。如果是要求异步调用的话,那必须要有单独的线程,一般也是放在nio上。
netty 默认线程数 == CPU数*2
客户端也可以用Selector。不想处理太多socket底层问题的话可以看看Netty和Mina。
建议线程数用cpu核心数来定,比如8核就8或16线程