当前位置: 欣欣网 > 码农

【BeetleX重构】首次性能测试结果

2024-06-04码农

BeetleX新版本进入了性能测试阶段,设计目标除了优化设计结构、替换内存池方案希望初期性能和旧版本相当。不过从这次的测试结果来看还是相当理想的。在之前的测试中客户端压测使用了BeetleX旧版本编写的压测工具,压测效果并不太理想,主要原因无法压满租用服务器的CPU资源 。经过思考后决定采用新版本来写压测工具进行测试。

初始次压测的逻辑比较简单,从 Socket 接收数据经常框架事件分发到应用层,在应用层把数据读取到一个临时内存后再次写入Socket发送给压测端。

public classUserSession : SesionBase{publicUserSession() { }privatebyte[] _data = newbyte[1024 * 8];publicoverridevoidReceive(NetContext context, object message) {while (context.Reader.Length > 0) {var len = context.Reader.Read(_data, 0, _data.Length); context.Writer.Write(_data, 0, len); } context.Writer.Flush(); }publicoverridevoidConnected(NetContext context) {base.Connected(context); }}

在这里并没有直接返回会话接收的Byte[]链表,读取出来并写入更合一个网络通讯应用的基础规范。

具体测试用压测工具发起1000个连接,向服务器发送数据包,当接收到服务响应同样长度的数据包后再做二次请求,然后统计每秒产生的IO读写数据量并显示,测试发送的内容分别是128,2K和16K字节。测试硬件环境是两台A家云的32核云主机,网络适配器是100Gb。以下是测试结果截

128字节

2K字节

16K字节

测试结果来看在发送128字节的测试中读写IO的总量基本已经达到了每秒270万即每秒130万的请求响应,而CPU基本处于满负载状态了。2K字节测试中CPU和IO量有下降出入带宽和27Gb。当测试到16K字节的时候带宽出入总量已经达到了43Gb,但cpu使用量不到50%显然是带宽受限了。

其实测试最有意义的还是第一项,看一下IO读写吞吐在相应CPU上的极限, 每秒 270万的量说实话也是一个相当满意的效果了。当然这只是一个组件最基础的性能,后续会实现一个简单的HTTP协议在协议分析的基础上再进行性能测试。

BeetleX

开源跨平台通讯框架(支持TLS)

提供HTTP,Websocket,MQTT,Redis,RPC和服务网关开源组件

个人微信:henryfan128 QQ:28304340

关注公众号

https://github.com/beetlex-io/