一次netty与java socket的压力测试对比【yetdone】为什么要用netty
1 结果:比较遗憾,无论是本机、单核远程、4核远程,两边的测试效果相当
2 远程测试,netty与socket都只能到2900个连接,极限了,4核服务器也是
后来发现,施压机java.lang.OutOfMemoryError: unable to create new native thread
3 配置2000个连接:
4 参数要点:
Forever,ramp-up Period 0 ——尽量模拟并发,防止太多线程(连接)太久进入或提早退出,弱化bio的弱点
不设置响应时间;响应超时太短,则两边都是同样的错误率、同样的吞吐量
5 本地结果:
socket
netty
6 远程单核
socket bio,netty nio,netty epoll
三者远程200、2000个连接,qps 均在750
7
qps socket高
平均响应时间 socket高
想要时间稳定性 netty好
8 为什么要用netty-https://youzhixueyuan.com/netty-implementation-principle.html?from=singlemessage&isappinstalled=0
1)java 类库麻烦;
2)获得nio的非阻塞客户端
3)客户端面临断连重连、网络闪断、半包读写、心跳、失败缓存、网络拥塞和异常码流的处理等等
4)NIO 的 Bug:例如臭名昭著的 Epoll Bug,它会导致 Selector 空轮询,最终导致 CPU 100%
9 为什么本次测试失败了
重点:
1)测试强度、设备达不到netty体现优势的阀值
2)测试环境太理想,可能netty在恶劣环境下有优势