AngusTester 和 JMeter HTTP 测试结果比较

本次测试主要目的是对比 AngusTeser 和 JMeter 在 HTTP 协议基准性能测试(最小延迟小于1毫秒)的表现。

测试环境

以下测试 AngusTeser 和 JMeter 使用相同环境。注意:本次测试是在同一台 PC 机上进行,如果想测试特定配置下服务的准确性能,需要将测试机和服务分开部署,或者使用更高配置的测试服务器。

软件

  • 测试服务

    • AngusMockService-1.0.0
  • 测试工具

    • AngusTester 1.0.0
    • Apache JMeter 4.0

系统

MacBookPro16 PC

  • Processors: 1
  • Cores: 8 * 2 Intel Core i9 2.3 GHz
  • Memory: 32 GB

服务配置

## Mock服务绑定IP,默认为0.0.0.0。
angusmock.serverIp=0.0.0.0
## Mock服务绑定端口,默认为30010。
angusmock.serverPort=30010
## 在Netty HTTP服务器上启用SSL选项,默认为false。
angusmock.useSsl=false
## 处理请求的线程数量,最大为10000,默认为256。
angusmock.workThreadNum=256
## Mock服务处理请求的线程前缀,默认为AngusMock-Thread。
angusmock.threadNamePrefix=AngusMock-Thread
## 启用Netty日志。建议仅在调试模式下打开,默认为false。
angusmock.enableNettyLog=false
## 配置将请求信息记录到日志文件的级别,包括两个选项:NONE、BASIC、HEADERS和FULL。
### - NONE: 不记录日志。
### - BASIC: 仅记录请求方法和URL,以及响应状态码和执行时间,默认值。
### - HEADERS: 记录基本信息以及请求和响应头部。
### - FULL: 记录请求和响应的头部、主体和元数据。
angusmock.logFileLevel=NONE
## 是否将模拟请求日志发送到服务器端,默认为true。
angusmock.sendRequestLog=false
## 允许的最大请求大小,默认为1000 * 1024 * 1024(1000MB)。
angusmock.maxContentLength=1048576000
## 处理推送请求的线程数量,默认为8。
angusmock.pushbackThreadNum=8
## 推送回退连接的最大超时时间,单位毫秒,默认为5000。
angusmock.maxPushbackConnectTimeout=5000
## 推送回退请求的最大超时时间,单位毫秒,默认为-1表示不超时。
angusmock.maxPushbackReadTimeout=-1
## 启用Mock服务的CORS(跨源资源共享)配置,默认为false。注意:服务配置的优先级高于属性文件配置。
angusmock.allowCors=false
## Access-Control-Allow-Origin: 指定可以参与跨源资源共享的Web站点,默认为*。
angusmock.allowCorsOrigin=*
## Access-Control-Allow-Credentials: 指定第三方站点是否可以执行特权操作并检索敏感信息,默认为true。
angusmock.allowCorsCredentials=true
## Access-Control-Allow-Headers: 指定客户端可以使用的允许的HTTP请求头,默认为空。
angusmock.allowCorsRequestHeaders=*
## Access-Control-Allow-Methods: 指定允许的HTTP方法,默认为GET、POST、PUT、PATCH、DELETE、OPTIONS、HEAD。
angusmock.allowCorsRequestMethods=GET,POST,PUT,PATCH,DELETE,OPTIONS,HEAD
## Access-Control-Expose-Headers: 指定允许在响应中访问的特定头字段,这些字段不包括在默认的可访问头集合中,客户端(通常是Web浏览器)可以访问,默认为空。
angusmock.allowCorsExposeHeaders=*
#-----------------------------------------------------------------------------------
# Angus Mock服务管理配置
#-----------------------------------------------------------------------------------
## Mock服务管理端点的基本路径,固定为/actuator。
# angusmock.management.endpointsBasePath=/actuator
## Mock服务管理端点允许跨域访问,默认为true。
angusmock.management.endpointsAllowCors=true
#-----------------------------------------------------------------------------------
# Angus Mock身份配置
#-----------------------------------------------------------------------------------
## Mock服务的租户ID,私有版本环境时需要手动配置,默认为空。
angusmock.principal.tenantId=1
## Mock服务的ID,私有版本环境时需要手动配置,默认为空。
angusmock.principal.mockServiceId=190640054090072119
## Mock服务设备(节点)ID,私有版本环境时需要手动配置,默认为空。
angusmock.principal.deviceId=187166587336261670
#-----------------------------------------------------------------------------------
# Angus Mock推送配置
#-----------------------------------------------------------------------------------
# 推送JVM指标的时间间隔,默认为15秒。
angusmock.jvmMetrics.pushIntervalInSecond=15
# 推送JVM指标的超时时间,不能超过exchange.pushTimeout,默认为5秒。
angusmock.jvmMetrics.pushTimeoutInSecond=10

测试接口

curl -i http://localhost:30010/benchmark
HTTP/1.1 200 OK
XC-Mock-ServiceId: 190640054090072119
XC-Mock-RequestId: fc479980-59e2-4479-a732-008e3eff218f
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: *
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD
Access-Control-Expose-Headers: *
Content-Type: text/plain
content-length: 7

Success

测试脚本

  • JMeter 脚本 (Http_Testing_Benchmark_AngusTesterVSJMeter.jmx)
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="4.0" jmeter="4.0 r1823414">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Http performance testing" enabled="true">
      <stringProp name="TestPlan.comments"></stringProp>
      <boolProp name="TestPlan.functional_mode">false</boolProp>
      <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="TestPlan.user_define_classpath"></stringProp>
    </TestPlan>
    <hashTree>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
          <boolProp name="LoopController.continue_forever">false</boolProp>
          <intProp name="LoopController.loops">-1</intProp>
        </elementProp>
        <stringProp name="ThreadGroup.num_threads">1<!-- 1/10/50/100/200/500/1000/2000 --></stringProp>
        <stringProp name="ThreadGroup.ramp_time"></stringProp>
        <boolProp name="ThreadGroup.scheduler">true</boolProp>
        <stringProp name="ThreadGroup.duration">60</stringProp>
        <stringProp name="ThreadGroup.delay"></stringProp>
      </ThreadGroup>
      <hashTree>
        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="HTTPSampler.domain">localhost</stringProp>
          <stringProp name="HTTPSampler.port">30010</stringProp>
          <stringProp name="HTTPSampler.protocol">http</stringProp>
          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
          <stringProp name="HTTPSampler.path">/benchmark</stringProp>
          <stringProp name="HTTPSampler.method">GET</stringProp>
          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
          <stringProp name="HTTPSampler.response_timeout"></stringProp>
        </HTTPSamplerProxy>
        <hashTree/>
      </hashTree>
    </hashTree>
  </hashTree>
</jmeterTestPlan>

运行脚本:

./jmeter -n -t ~/scripts/Http_Testing_Benchmark_AngusTesterVSJMeter.jmx
  • AngusTester 脚本 (Http_Testing_Benchmark_AngusTesterVSJMeter.yaml)
specification: angus/1.0.0
type: TEST_PERFORMANCE
plugin: Http
configuration:
  duration: 60s
  thread:
    threads: 1 # 1/10/50/100/200/500/1000/2000
  priority: 1000
task:
  pipelines:
    - target: HTTP
      name: Total
      enabled: true
      request:
        method: GET
        url: http://localhost:30010/benchmark

运行脚本:

./startup-runner.sh -s ~/scripts/Http_Testing_Benchmark_AngusTesterVSJMeter.yaml -e 1

测试结果

Insert 测试

  • 1 个线程运行 60 秒测试结果

JMeter 测试结果:

Starting the test @ Sat Jan 13 10:01:20 CST 2024 (1705111280949)
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary +  88138 in 00:00:09 = 10013.4/s Avg:     0 Min:     0 Max:    50 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0
summary + 338604 in 00:00:30 = 11286.8/s Avg:     0 Min:     0 Max:     5 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0
summary = 426742 in 00:00:39 = 10997.9/s Avg:     0 Min:     0 Max:    50 Err:     0 (0.00%)
summary + 262119 in 00:00:21 = 12315.9/s Avg:     0 Min:     0 Max:     4 Err:     0 (0.00%) Active: 0 Started: 1 Finished: 1
summary = 688861 in 00:01:00 = 11464.6/s Avg:     0 Min:     0 Max:    50 Err:     0 (0.00%)
Tidying up ...    @ Sat Jan 13 10:02:21 CST 2024 (1705111341284)
... end of run

AngusTester 测试结果:

===========================================================================================================================
  *** Task Summary Report @ Http TEST_PERFORMANCE @ 2024-01-12 22:05:28 ***
===========================================================================================================================
  Exec ID: 1                                    Run Mode: LOCAL                    Memory: 114.51MBM(Used), 9.12GBM(Free)
  Bytes: 270.42MB(Recv), 34.69MB(Write)         Iterations: 742283                 Cpu: 55.70%(Proc), 226.68%(Sys)
  Date: 01/12 10:04:28 to 01/12 10:05:28        Duration: 60 Second                Threads: 0/1  terminated
+-------+---------+------+-----+-------+-----+-----+-----+-----+------+--------+----------+--------+--------+--------+----------+
| Name  | Samples | Mean | Min | Max   | P50 | P75 | P90 | P99 | P999 | Trans  | Trans/s  | Errors | Error% | Recv/s | Write/s  |
+-------+---------+------+-----+-------+-----+-----+-----+-----+------+--------+----------+--------+--------+--------+----------+
| Total | 742283  | 0.08 | 0.0 | 119.0 | 0.0 | 0.0 | 0.0 | 1.0 | 1.0  | 742283 | 12371.38 | 0      | 0.0    | 4.51MB | 591.99KB |
+-------+---------+------+-----+-------+-----+-----+-----+-----+------+--------+----------+--------+--------+--------+----------+
  *** Sampling Result: SUCCESS
===========================================================================================================================
  • 10 个线程运行 60 秒测试结果

JMeter 测试结果:

Starting the test @ Fri Jan 12 22:11:55 CST 2024 (1705068715265)
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary + 208924 in 00:00:04 = 46697.4/s Avg:     0 Min:     0 Max:    68 Err:     0 (0.00%) Active: 10 Started: 10 Finished: 0
summary + 2007667 in 00:00:30 = 66922.2/s Avg:     0 Min:     0 Max:    21 Err:     0 (0.00%) Active: 10 Started: 10 Finished: 0
summary = 2216591 in 00:00:34 = 64297.5/s Avg:     0 Min:     0 Max:    68 Err:     0 (0.00%)
summary + 1331246 in 00:00:26 = 51977.4/s Avg:     0 Min:     0 Max:     6 Err:     0 (0.00%) Active: 0 Started: 10 Finished: 10
summary = 3547837 in 00:01:00 = 59045.0/s Avg:     0 Min:     0 Max:    68 Err:     0 (0.00%)
Tidying up ...    @ Fri Jan 12 22:12:55 CST 2024 (1705068775613)
... end of run

AngusTester 测试结果:

===========================================================================================================================
  *** Task Summary Report @ Http TEST_PERFORMANCE @ 2024-01-12 22:09:57 ***
===========================================================================================================================
  Exec ID: 1                                    Run Mode: LOCAL                    Memory: 216.81MBM(Used), 9.02GBM(Free)
  Bytes: 1.23GB(Recv), 161.86MB(Write)          Iterations: 3463729                Cpu: 550.21%(Proc), 1242.21%(Sys)
  Date: 01/12 10:09:01 to --                    Duration: 55 Second                Threads: 10/10  running
+-------+---------+------+-----+-------+-----+-----+-----+-----+------+---------+----------+--------+--------+---------+---------+
| Name  | Samples | Mean | Min | Max   | P50 | P75 | P90 | P99 | P999 | Trans   | Trans/s  | Errors | Error% | Recv/s  | Write/s |
+-------+---------+------+-----+-------+-----+-----+-----+-----+------+---------+----------+--------+--------+---------+---------+
| Total | 3463719 | 0.16 | 0.0 | 155.0 | 0.0 | 0.0 | 1.0 | 1.0 | 1.0  | 3463719 | 62687.21 | 0      | 0.0    | 22.84MB | 2.93MB  |
+-------+---------+------+-----+-------+-----+-----+-----+-----+------+---------+----------+--------+--------+---------+---------+
  *** Sampling Result: SUCCESS
===========================================================================================================================
  • 50 个线程运行 60 秒测试结果

JMeter 测试结果:

Starting the test @ Fri Jan 12 22:16:19 CST 2024 (1705068979674)
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary + 804544 in 00:00:10 = 79879.3/s Avg:     0 Min:     0 Max:   250 Err:     0 (0.00%) Active: 50 Started: 50 Finished: 0
summary + 2240631 in 00:00:30 = 74687.7/s Avg:     0 Min:     0 Max:   137 Err:     0 (0.00%) Active: 50 Started: 50 Finished: 0
summary = 3045175 in 00:00:40 = 75992.6/s Avg:     0 Min:     0 Max:   250 Err:     0 (0.00%)
summary + 1274138 in 00:00:20 = 63627.4/s Avg:     0 Min:     0 Max:   167 Err:     0 (0.00%) Active: 0 Started: 50 Finished: 50
summary = 4319313 in 00:01:00 = 71872.4/s Avg:     0 Min:     0 Max:   250 Err:     0 (0.00%)
Tidying up ...    @ Fri Jan 12 22:17:20 CST 2024 (1705069040026)
... end of run

AngusTester 测试结果:

===========================================================================================================================
  *** Task Summary Report @ Http TEST_PERFORMANCE @ 2024-01-12 22:15:40 ***
===========================================================================================================================
  Exec ID: 1                                    Run Mode: LOCAL                    Memory: 433.35MBM(Used), 8.81GBM(Free)
  Bytes: 1.85GB(Recv), 242.69MB(Write)          Iterations: 5193453                Cpu: 477.60%(Proc), 1108.46%(Sys)
  Date: 01/12 10:14:40 to 01/12 10:15:40        Duration: 60 Second                Threads: 0/50  terminated
+-------+---------+------+-----+-------+-----+-----+-----+-----+------+---------+----------+--------+--------+---------+---------+
| Name  | Samples | Mean | Min | Max   | P50 | P75 | P90 | P99 | P999 | Trans   | Trans/s  | Errors | Error% | Recv/s  | Write/s |
+-------+---------+------+-----+-------+-----+-----+-----+-----+------+---------+----------+--------+--------+---------+---------+
| Total | 5193453 | 0.57 | 0.0 | 260.0 | 0.0 | 1.0 | 1.0 | 4.0 | 35.0 | 5193453 | 86556.11 | 0      | 0.0    | 31.53MB | 4.04MB  |
+-------+---------+------+-----+-------+-----+-----+-----+-----+------+---------+----------+--------+--------+---------+---------+
  *** Sampling Result: SUCCESS
===========================================================================================================================


Stop from 192.168.255.22 @ Fri Jan 12 22:15:41 CST 2024, force=false, timeoutInMillis=3000
Runner threads has been shutdown
  • 100 个线程运行 60 秒测试结果

JMeter 测试结果:

Starting the test @ Fri Jan 12 22:20:26 CST 2024 (1705069226157)
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary + 187584 in 00:00:04 = 52106.7/s Avg:     1 Min:     0 Max:   341 Err:     0 (0.00%) Active: 100 Started: 100 Finished: 0
summary + 2081627 in 00:00:30 = 69387.6/s Avg:     1 Min:     0 Max:   286 Err:     0 (0.00%) Active: 100 Started: 100 Finished: 0
summary = 2269211 in 00:00:34 = 67536.0/s Avg:     1 Min:     0 Max:   341 Err:     0 (0.00%)
summary + 1676282 in 00:00:27 = 63253.5/s Avg:     1 Min:     0 Max:   179 Err:     0 (0.00%) Active: 0 Started: 100 Finished: 100
summary = 3945493 in 00:01:00 = 65646.6/s Avg:     1 Min:     0 Max:   341 Err:     0 (0.00%)
Tidying up ...    @ Fri Jan 12 22:21:26 CST 2024 (1705069286502)
... end of run

AngusTester 测试结果:

===========================================================================================================================
  *** Task Summary Report @ Http TEST_PERFORMANCE @ 2024-01-12 22:20:03 ***
===========================================================================================================================
  Exec ID: 1                                    Run Mode: LOCAL                    Memory: 434.3MBM(Used), 8.81GBM(Free)
  Bytes: 1.78GB(Recv), 233.68MB(Write)          Iterations: 5000593                Cpu: 600.63%(Proc), 1369.24%(Sys)
  Date: 01/12 10:19:03 to 01/12 10:20:03        Duration: 60 Second                Threads: 0/100  terminated
+-------+---------+------+-----+-------+-----+-----+-----+------+------+---------+----------+--------+--------+---------+---------+
| Name  | Samples | Mean | Min | Max   | P50 | P75 | P90 | P99  | P999 | Trans   | Trans/s  | Errors | Error% | Recv/s  | Write/s |
+-------+---------+------+-----+-------+-----+-----+-----+------+------+---------+----------+--------+--------+---------+---------+
| Total | 5000593 | 1.19 | 0.0 | 328.0 | 1.0 | 1.0 | 1.0 | 13.0 | 92.0 | 5000593 | 83343.22 | 0      | 0.0    | 30.36MB | 3.89MB  |
+-------+---------+------+-----+-------+-----+-----+-----+------+------+---------+----------+--------+--------+---------+---------+
  *** Sampling Result: SUCCESS
===========================================================================================================================
  • 200 个线程运行 60 秒测试结果

JMeter 测试结果:

Starting the test @ Fri Jan 12 22:34:57 CST 2024 (1705070097385)
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary +  35249 in 00:00:02 = 15419.5/s Avg:     9 Min:     0 Max:   754 Err:     0 (0.00%) Active: 200 Started: 200 Finished: 0
summary + 1758509 in 00:00:30 = 58642.4/s Avg:     3 Min:     0 Max:  1130 Err:     0 (0.00%) Active: 200 Started: 200 Finished: 0
summary = 1793758 in 00:00:32 = 55580.8/s Avg:     3 Min:     0 Max:  1130 Err:     0 (0.00%)
summary + 1693121 in 00:00:28 = 60752.8/s Avg:     3 Min:     0 Max:   405 Err:     0 (0.00%) Active: 0 Started: 200 Finished: 200
summary = 3486879 in 00:01:00 = 57977.4/s Avg:     3 Min:     0 Max:  1130 Err:     0 (0.00%)
Tidying up ...    @ Fri Jan 12 22:35:57 CST 2024 (1705070157870)
... end of run

AngusTester 测试结果:

===========================================================================================================================
  *** Task Summary Report @ Http TEST_PERFORMANCE @ 2024-01-12 22:34:47 ***
===========================================================================================================================
  Exec ID: 1                                    Run Mode: LOCAL                    Memory: 219.95MBM(Used), 9.02GBM(Free)
  Bytes: 1.61GB(Recv), 211.23MB(Write)          Iterations: 4520270                Cpu: 615.87%(Proc), 1368.42%(Sys)
  Date: 01/12 10:33:47 to 01/12 10:34:47        Duration: 60 Second                Threads: 0/200  terminated
+-------+---------+------+-----+-------+-----+-----+-----+------+-------+---------+----------+--------+--------+---------+---------+
| Name  | Samples | Mean | Min | Max   | P50 | P75 | P90 | P99  | P999  | Trans   | Trans/s  | Errors | Error% | Recv/s  | Write/s |
+-------+---------+------+-----+-------+-----+-----+-----+------+-------+---------+----------+--------+--------+---------+---------+
| Total | 4520270 | 2.65 | 0.0 | 551.0 | 1.0 | 2.0 | 3.0 | 44.0 | 129.0 | 4520270 | 75337.83 | 0      | 0.0    | 27.45MB | 3.52MB  |
+-------+---------+------+-----+-------+-----+-----+-----+------+-------+---------+----------+--------+--------+---------+---------+
  *** Sampling Result: SUCCESS
===========================================================================================================================
  • 500 个线程运行 60 秒测试结果

JMeter 测试结果:

Starting the test @ Fri Jan 12 22:40:58 CST 2024 (1705070458720)
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary +   6514 in 00:00:01 = 6293.7/s Avg:    32 Min:     0 Max:   853 Err:     0 (0.00%) Active: 500 Started: 500 Finished: 0
summary + 2227998 in 00:00:30 = 74266.6/s Avg:     6 Min:     0 Max:  1181 Err:   649 (0.03%) Active: 500 Started: 500 Finished: 0
summary = 2234512 in 00:00:31 = 71999.7/s Avg:     6 Min:     0 Max:  1181 Err:   649 (0.03%)
summary + 1406168 in 00:00:29 = 48313.6/s Avg:    10 Min:     0 Max:   669 Err:   192 (0.01%) Active: 0 Started: 500 Finished: 500
summary = 3640680 in 00:01:00 = 60536.7/s Avg:     8 Min:     0 Max:  1181 Err:   841 (0.02%)
Tidying up ...    @ Fri Jan 12 22:41:59 CST 2024 (1705070519105)
... end of run

AngusTester 测试结果:

===========================================================================================================================
  *** Task Summary Report @ Http TEST_PERFORMANCE @ 2024-01-12 22:39:30 ***
===========================================================================================================================
  Exec ID: 1                                    Run Mode: LOCAL                    Memory: 285.7MBM(Used), 8.96GBM(Free)
  Bytes: 1.46GB(Recv), 192.0MB(Write)           Iterations: 4108760                Cpu: 610.46%(Proc), 1257.58%(Sys)
  Date: 01/12 10:38:30 to 01/12 10:39:30        Duration: 60 Second                Threads: 0/500  terminated
+-------+---------+------+-----+--------+-----+-----+------+------+-------+---------+----------+--------+--------+---------+---------+
| Name  | Samples | Mean | Min | Max    | P50 | P75 | P90  | P99  | P999  | Trans   | Trans/s  | Errors | Error% | Recv/s  | Write/s |
+-------+---------+------+-----+--------+-----+-----+------+------+-------+---------+----------+--------+--------+---------+---------+
| Total | 4108760 | 7.28 | 0.0 | 1009.0 | 3.0 | 5.0 | 11.0 | 98.0 | 159.0 | 4108760 | 68479.33 | 0      | 0.0    | 24.95MB | 3.2MB   |
+-------+---------+------+-----+--------+-----+-----+------+------+-------+---------+----------+--------+--------+---------+---------+
  *** Sampling Result: SUCCESS
===========================================================================================================================
  • 1000 个线程运行 60 秒测试结果

JMeter 测试结果:

Starting the test @ Fri Jan 12 22:48:15 CST 2024 (1705070895534)
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary + 625738 in 00:00:14 = 44199.9/s Avg:    19 Min:     0 Max:  1840 Err:  1499 (0.24%) Active: 1000 Started: 1000 Finished: 0
summary + 1167397 in 00:00:30 = 38640.2/s Avg:    25 Min:     0 Max:  2298 Err:  5215 (0.45%) Active: 1000 Started: 1000 Finished: 0
summary = 1793135 in 00:00:44 = 40413.2/s Avg:    23 Min:     0 Max:  2298 Err:  6714 (0.37%)
summary + 551761 in 00:00:16 = 34857.6/s Avg:    29 Min:     0 Max:  2384 Err:  3758 (0.68%) Active: 0 Started: 1000 Finished: 1000
summary = 2344896 in 00:01:00 = 38952.4/s Avg:    24 Min:     0 Max:  2384 Err: 10472 (0.45%)
Tidying up ...    @ Fri Jan 12 22:49:16 CST 2024 (1705070956042)
... end of run

AngusTester 测试结果:

===========================================================================================================================
  *** Task Summary Report @ Http TEST_PERFORMANCE @ 2024-01-12 22:48:09 ***
===========================================================================================================================
  Exec ID: 1                                    Run Mode: LOCAL                    Memory: 307.85MBM(Used), 8.93GBM(Free)
  Bytes: 1.16GB(Recv), 152.72MB(Write)          Iterations: 3268051                Cpu: 694.65%(Proc), 1162.53%(Sys)
  Date: 01/12 10:47:09 to 01/12 10:48:09        Duration: 60 Second                Threads: 0/1000  terminated
+-------+---------+-------+-----+--------+-----+------+------+-------+-------+---------+----------+--------+--------+---------+---------+
| Name  | Samples | Mean  | Min | Max    | P50 | P75  | P90  | P99   | P999  | Trans   | Trans/s  | Errors | Error% | Recv/s  | Write/s |
+-------+---------+-------+-----+--------+-----+------+------+-------+-------+---------+----------+--------+--------+---------+---------+
| Total | 3268051 | 18.29 | 0.0 | 2012.0 | 8.0 | 14.0 | 35.0 | 141.0 | 205.0 | 3268051 | 54467.52 | 0      | 0.0    | 19.84MB | 2.55MB  |
+-------+---------+-------+-----+--------+-----+------+------+-------+-------+---------+----------+--------+--------+---------+---------+
  *** Sampling Result: SUCCESS
===========================================================================================================================
  • 2000 个线程运行 60 秒测试结果

JMeter 测试结果:

Starting the test @ Fri Jan 12 22:53:28 CST 2024 (1705071208693)
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary +   2012 in 00:00:01 = 1832.4/s Avg:    64 Min:     0 Max:   731 Err:    31 (1.54%) Active: 2000 Started: 2000 Finished: 0
summary + 329540 in 00:00:30 = 11000.8/s Avg:   183 Min:     0 Max:  2754 Err: 169684 (51.49%) Active: 2000 Started: 2000 Finished: 0
summary = 331552 in 00:00:31 = 10676.6/s Avg:   182 Min:     0 Max:  2754 Err: 169715 (51.19%)
summary + 185640 in 00:00:30 = 6187.6/s Avg:   314 Min:     0 Max:  3874 Err: 138797 (74.77%) Active: 4 Started: 2000 Finished: 1996
summary = 517192 in 00:01:01 = 8470.8/s Avg:   230 Min:     0 Max:  3874 Err: 308512 (59.65%)
summary +      3 in 00:00:00 =   35.7/s Avg:  1084 Min:  1080 Max:  1088 Err:     0 (0.00%) Active: 0 Started: 2000 Finished: 2000
summary = 517195 in 00:01:01 = 8459.1/s Avg:   230 Min:     0 Max:  3874 Err: 308512 (59.65%)
Tidying up ...    @ Fri Jan 12 22:54:30 CST 2024 (1705071270087)
... end of run

AngusTester 测试结果:

===========================================================================================================================
  *** Task Summary Report @ Http TEST_PERFORMANCE @ 2024-01-12 22:51:33 ***
===========================================================================================================================
  Exec ID: 1                                    Run Mode: LOCAL                    Memory: 167.23MBM(Used), 9.07GBM(Free)
  Bytes: 688.03MB(Recv), 88.26MB(Write)         Iterations: 1888681                Cpu: 1017.14%(Proc), 1352.72%(Sys)
  Date: 01/12 10:50:32 to 01/12 10:51:32        Duration: 60 Second                Threads: 0/2000  terminated
+-------+---------+-------+-----+--------+------+------+-------+-------+--------+---------+----------+--------+--------+---------+---------+
| Name  | Samples | Mean  | Min | Max    | P50  | P75  | P90   | P99   | P999   | Trans   | Trans/s  | Errors | Error% | Recv/s  | Write/s |
+-------+---------+-------+-----+--------+------+------+-------+-------+--------+---------+----------+--------+--------+---------+---------+
| Total | 1888681 | 62.69 | 0.0 | 3996.0 | 35.0 | 84.0 | 149.0 | 204.0 | 3134.0 | 1888681 | 31478.02 | 0      | 0.0    | 11.47MB | 1.47MB  |
+-------+---------+-------+-----+--------+------+------+-------+-------+--------+---------+----------+--------+--------+---------+---------+
  *** Sampling Result: SUCCESS
===========================================================================================================================

对比结果

  • 相同条件下,不断增加并发线程数,AngusTester 性能都要比 JMeter 高,JMeter 50 并发时 QPS 达到最高 71872.4/s,AngusTester 50 并发时 QPS 达到最高 86556.11,最大 QPS 提升了 20.43%
  • QPS 达到最大后,随着并发线程数继续增加,JMeter 性能下降迅速,AngusTester 性能下降比较平缓,表现平稳。
  • 在基准性能测试(最小延迟小于1毫秒)过程中,随着并发线程增加到 1000 后,JMeter 开始出现大量错误,错率率不断升高,AngusTester 未出现错误。进过测试验证,当并发线程数超过 1000 时,ab、wrk、JMeter 都存在错误率,会出现连接被重置异常,或者到达采样结束时间时强制关闭连接的情况。
posted @ 2024-01-25 14:09  AngusTester  阅读(30)  评论(0编辑  收藏  举报