这一版本的主要升级了BeetleX的基础网络库,主要解决在某些情况导致解释http协议cpu暴增长的问题,同时使用BeetleX新版本针对的IndexOf的优化,使http协议解释上有着一定程度的性能提升。
新版本同样也是支持win64和linux64两个版本,具体安装使用可查看
【BeetleX之Web网关1.5.7安装使用】。以下相关功能使用截图
性能测试
对于一个网关来说性能一个比较关心的指标,接下来针对1.5.8做一个简单的吞吐测试。这些测试也只是简单地测试一下,使用的操作系统是桌面版本的win10,cpu则是使用E1230V2一款非常老的4核8线程CPU,内存则是16GB,网络则选用10Gb的光模(主要1Gb无法满足测试的需求)。
为了能把网关服务压到极限,所以压测服务器和API服务器则选择一台20核32G内存的WIN2008服务器,确保压测程序和API服务能够满足网关的需求。
这一次测试并不是简单地返回一个字符串,而是更符合实际应用地返回不同大小的数据列表,结构如下:
[{"customerID": "ALFKI","companyName": "Alfreds Futterkiste","contactName": "Maria Anders","contactTitle": "Sales Representative","address": "Obere Str. 57","city": "Berlin","postalCode": "12209","country": "Germany","phone": "030-0074321","fax": "030-0076545"}
]
测试分了5个批次来进行,分别是获取1,5,10,20和50个客户信息。测试工具使用bombardier每次使用100并发压测网关的响应吞吐能力。以下是测试的详细结果:
D:\>bombardier.exe -c 100 -n 1000000 http://192.168.2.18/customers?count=1
Bombarding http://192.168.2.18/customers?count=1 with 1000000 request(s) using 1
00 connection(s)1000000 / 1000000 [==============================================] 100.00% 22s
Done!
Statistics Avg Stdev MaxReqs/sec 44083.12 3238.01 49047.30Latency 2.27ms 2.98ms 609.03msHTTP codes:1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0others - 0Throughput: 19.59MB/s
D:\>bombardier.exe -c 100 -n 1000000 http://192.168.2.18/customers?count=5
Bombarding http://192.168.2.18/customers?count=5 with 1000000 request(s) using 1
00 connection(s)1000000 / 1000000 [==============================================] 100.00% 21s
Done!
Statistics Avg Stdev MaxReqs/sec 46818.87 5258.01 54296.74Latency 2.13ms 2.22ms 615.03msHTTP codes:1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0others - 0Throughput: 66.88MB/s
D:\>bombardier.exe -c 100 -n 1000000 http://192.168.2.18/customers?count=10
Bombarding http://192.168.2.18/customers?count=10 with 1000000 request(s) using
100 connection(s)1000000 / 1000000 [==============================================] 100.00% 23s
Done!
Statistics Avg Stdev MaxReqs/sec 42954.14 4766.32 53000.00Latency 2.33ms 2.57ms 606.03msHTTP codes:1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0others - 0Throughput: 113.73MB/s
D:\>bombardier.exe -c 100 -n 1000000 http://192.168.2.18/customers?count=20
Bombarding http://192.168.2.18/customers?count=20 with 1000000 request(s) using
100 connection(s)1000000 / 1000000 [==============================================] 100.00% 27s
Done!
Statistics Avg Stdev MaxReqs/sec 36768.81 1938.67 40747.56Latency 2.72ms 86.82us 30.00msHTTP codes:1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0others - 0Throughput: 184.96MB/s
D:\>bombardier.exe -c 100 -n 1000000 http://192.168.2.18/customers?count=50
Bombarding http://192.168.2.18/customers?count=50 with 1000000 request(s) using
100 connection(s)1000000 / 1000000 [==============================================] 100.00% 39s
Done!
Statistics Avg Stdev MaxReqs/sec 25329.65 2414.78 28948.41Latency 3.94ms 2.41ms 626.03msHTTP codes:1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0others - 0Throughput: 314.18MB/s
D:\>
以下是网关所在操作系统监控50客户个数获取的带宽情况,收发分别是2.8Gb,网关吞吐交互的总带宽量在6Gb左右。
以上是1.5.8的一些性能测试情况,不过这次测试并没有反映出网关的最高性能,毕竟操作系统并没有使用服务器版本进行一个压测。不过从数据来说在一台这么旧的电脑上能达到这么高带宽吞吐交互性上表现已经非常出色。
(提醒:独立版的网关并发受限,需要授权才能开启更高并发。想做测试可以引用组件,组件代码不限制,详情可访问:https://github.com/beetlex-io/Bumblebee)