服务器性能测试

测试类型

服务器性能测试主要分为两类:

  • 连接吞吐测试: 测试TCP的连接建立和断开性能
  • 数据吞吐测试: 测试数据收发能力
    图片1

测试工具尝试

1. hping3测试

hping3主要用于TCP/UDP/ICMP测试,可以用于简单的TCP并发连接测试。

测试命令:

1
hping3 -S -p 8080 -c 200 --fast 127.0.0.1

参数说明:

  • -S:发送SYN包(建立TCP连接)
  • -p 8080:目标端口8080
  • -c 200:发送200个连接
  • –fast:快速发送请求

2. 测试问题

hping3存在问题:只发送SYN包而不完成完整的三次握手。

尝试使用nping:

  • 可以同时发送SYN和ACK
  • 但服务器直接返回RST拒绝连接
  • 可能是因为同时发送导致的问题

3. wrk测试

最后尝试使用http测试工具wrk:

1
wrk -t4 -c1000 -d10s http://127.0.0.1:8082/

参数说明:

  • 4个线程
  • 1000并发连接
  • 持续10秒

测试结果:

1
2
3
4
5
6
7
8
9
Running 10s test @ http://127.0.0.1:8082/
4 threads and 1000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 0.00us 0.00us 0.00us -nan%
Req/Sec 0.00 0.00 0.00 -nan%
0 requests in 10.10s, 0.00B read
Socket errors: connect 0, read 221412, write 0, timeout 0
Requests/sec: 0.00
Transfer/sec: 0.00B

图片1
图片1

4. 最终方案

虽然wrk需要解析HTTP协议会带来额外开销,但考虑到测试的完整性,最终还是选择了:

  • 使用简单的HTTP响应
  • 通过自定义client.cpp进行压力测试

图片1
图片1