一次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在恶劣环境下有优势

一次netty压力测试.zip

原文地址:https://www.cnblogs.com/silyvin/p/12495073.html