测试方法
采用 mina 和 netty 各实现一个 基于 nio 的EchoServer,测试在不同大小网络报文下的性能表现
测试环境
客户端-服务端:
model name: Intel(R) Core(TM) i5-2320 CPU @ 3.00GHz
cache size: 6144 KB
cpu cores: 4
jdk: 1.6.0_30-b12
network: 1000Mb
memory: -Xms256m -Xmx256m
Linux: centos 5.7, kernel 2.6.18-274.el5
测试工具:
jmeter v2.4
版本:
mina 2.0.7
netty 3.6.2.Final
配置:
mina
io-processor cpu 核数
executor cpu 核数
buffer 初始 buffer 大小,设置为 2048(2k)
netty
boss netty 默认配置 1
worker cpu 核数
executor cpu 核数
其实,从理论上来说, echo 型的应用不配置 executor 业务执行线程池会获得更好的性能和更低的消耗,但考虑在真实业务应用中,真实的业务场景处理通常涉及各种复杂逻辑计算,缓存、数据库、外部接口访问,为避免业务执行延时阻塞 io 线程执行导致吞吐降低,

本文对比测试了Mina和Netty在不同大小网络报文下的性能,发现两者在1k、2k、10k、50k、100k报文时的TPS接近,但在5k报文时Mina出现性能下降,原因是其缓冲区分配策略导致的抖动。Netty的CPU消耗较高,可能与Executor实现有关。测试建议Mina优化缓冲区分配,Netty降低CPU消耗。
最低0.47元/天 解锁文章
885

被折叠的 条评论
为什么被折叠?



