Netty websocket server压力测试
来源:互联网 发布:李强强 linux 编辑:程序博客网 时间:2024/04/28 08:37
硬件配置:
压测客户端和服务器端在同一台pc上。Pc配置:
AMD A10-5800K APU with Radeon(tm) HD Graphics 3.80Ghz 四核
4G RAM
西数WDC WD10EZEX-60ZF5A0 ( 1 TB / 7200 转/分) 这个可以不写的
主要的测试目标分为:
1. 服务器端在一定时间内可接受客户端空闲连接的数量/峰值;
连接数
时间
1
180ms
1000
1150ms
2000
2207ms
6000
9000ms
每次建立tcp连接(包括web socket握手),平均需要180ms左右;
但是并不意味着 建立1000个连接需要180*1000ms,因为建立连接过程是异步的,详见压测客户端的代码。当建立较大量连接时(一万以内),所耗费的时间与连接数基本上是线性关系。
测试中,当测试6000连接数多于2次,在不重启jvm的情况下,测试程序客户端基本上就会报buffer空间不足的异常。
2. 服务器端同时保持空闲长连接的数量/峰值;
连接数
服务端java进程内存
服务端cpu利用率
0
358M
0%
6000
458M+
1%
10000
458M+
1%
服务器启动后,可以看到已使用内存为358M,客户端连接后为457M。它们之间的差值并不是保持所有连接 耗费的内存。因为建立连接过程中,在新生代中产生了很多垃圾内存。
标准的测试方法是:在开始连接之前,强制gc,这时看到是java进程真正占用的内存m1;在1w个连接建立之后,再次强制gc,用当前值m2减去上次gc后的内存值m1,才是保持连接实际占用的内存值,约为25M。
注意:频繁连接服务器建立1w个连接,即使全部断开,在客户端netstat –p依然可以看到这2w个端口在被占用着,未完全释放。这时就会出现异常 java.net.SocketException: No buffer space available (maximum connections reached?): connect
3. 分别在单个连接和多个连接的情况下,统计服务器端netty网络层的吞吐率。
单连接 客户端发送PingWebSocketFrame:
时间表示客户端从发送第一个ping消息 开始计时,在收到最后一个pong消息后结束计时。
ping次数
时间
1k
160ms
3k
380ms
5k
550ms
1w
785ms
10w
2617ms
100w
24602ms
多连接:
连接数
每个连接ping次数
时间
吞吐率
1k
100
4280ms
23364
1k
500
10432ms
47929
1k
1k
18082ms
55303
1k
2k
36261ms
55155
2k
100
6900ms
28985
2k
500
19610ms
50994
2k
1000
33727ms
59299
3k
100
9752ms
30762
3k
500
31461ms
47678
3k
1000
56176ms 122491ms
压测无法进行(丢包,卡)
4. 测试网络流量
客户端向服务器端发送ClientRequest,payload为LoadTest对象,序列化为json字符串,大约800+个字符。可大致认为每条请求消息字符长度为800+。
连接数
每个连接请求次数
时间
平均每秒请求数
IO性能(每秒字符数)
1
1k
566ms
1766
1
5k
1099ms
4549
1
1w
1157ms
8643
1
10w
5601ms
17853
1k
100
11094ms
9013
2k
100
25959ms
7692
3k
100
40062ms
7500
- Netty websocket server压力测试
- websocket压力测试
- Azure平台 Netty压力测试
- jmeter进行websocket压力测试
- [Java] Netty Websocket Server Javascript Client
- [Java] Netty Websocket Server Javascript Client
- 使用jmeter对websocket进行压力测试
- WebSocket 的性能与压力测试
- 使用jmeter对websocket进行压力测试
- netty websocket
- netty websocket
- netty websocket
- Undertow、Vert.x 和 Netty 的压力测试比较
- Jmeter对基于websocket协议的压力测试
- Jmeter对基于websocket协议的压力测试
- 【转帖】SQL SERVER 2000压力测试 (转)
- SQL SERVER并发压力测试工具
- Hive Metastore Thrift Server Partition压力测试
- EXP-00003: 未找到段 (0,0) 的存储定义
- 省市县自关联表的数据封装
- 基于retrofit的网络框架的终极封装(一):第一层(参数组装层)的API设计
- XGBoost解决多分类问题
- 内存抖动和内存泄漏
- Netty websocket server压力测试
- 自定义MediaPlayer控制组件
- 数据库第十五章上机1
- 1*1的卷积核与Inception
- 时间插件
- DEBIN GDM 选择多种桌面
- UML四种关系简介
- 利用大白菜制作多系统启动U盘(win+ubuntu+PE+...)
- 使用MockMvc测试Spring mvc Controller