方案一:每收到一个请求就上报
方案二:使用全局共享内存,定时上报
方案三:每个进程各自统计,定时上报
总结:
方案一:目前无优点,Golang读取到的请求数会丢失
方案二:高并发下,性能最好,稳定性会有波动。
方案三:性能不如方案二,有较低概率数据丢失(不排除测试代码问题),稳定性也会有波动,但比方案二的波动小一些
第一轮(方案一 VS 方案二)
总体情况
请求完成数和失败数:
方案一测试:50000个请求,503个失败请求。
方案二测试:50000个请求,334个失败请求。
方案二测试的失败请求较少,表现稍好。
测试时间:
方案一测试:122.214秒。
方案二测试:99.093秒。
方案二测试时间较短,性能较好。
并发和吞吐量
每秒请求数:
方案一测试:409.12 [#/sec]。
方案二测试:504.58 [#/sec]。
方案二测试的每秒请求数较高,表现较好。
传输率:
方案一测试:51428.59 [Kbytes/sec]。
方案二测试:63441.79 [Kbytes/sec]。
方案二测试的传输率较高,性能更好。
请求处理时间
平均每个请求的处理时间:
方案一测试:6355.150 ms (mean)。
方案二测试:5152.830 ms (mean)。
方案二测试的平均处理时间更短,表现较好。
并发请求的平均处理时间:
方案一测试:2.444 ms。
方案二测试:1.982 ms。
方案二测试在并发请求上的处理时间较短,表现较好。
连接和处理时间
连接时间:
方案一测试:平均727 ms。
方案二测试:平均415 ms。
方案二测试的连接时间更短,表现较好。
处理时间:
方案一测试:平均2621 ms。
方案二测试:平均1705 ms。
方案二测试的处理时间更短,性能更好。
等待时间:
方案一测试:平均835 ms。
方案二测试:平均422 ms。
方案二测试的等待时间更短,表现较好。
总时间:
方案一测试:平均3349 ms。
方案二测试:平均2119 ms。
方案二测试的总时间更短,表现更优。
请求完成时间的百分比
方案一测试:
50% 请求完成时间:3194 ms
75% 请求完成时间:3278 ms
90% 请求完成时间:3584 ms
99% 请求完成时间:6574 ms
方案二测试:
50% 请求完成时间:2000 ms
75% 请求完成时间:2046 ms
90% 请求完成时间:2116 ms
99% 请求完成时间:4136 ms
方案二测试的各百分比请求完成时间均较短,表现更优。
结论
总体来看,方案二压力测试在各方面表现均优于方案一测试,包括失败请求数、测试时间、每秒请求数、传输率、处理时间和请求完成时间的百分比。方案二测试显示出更高的系统性能和稳定性。
压测数据
方案一

方案二

第二轮(方案一 VS 方案二)
1. 并发级别
两次测试的并发级别(Concurrency Level)都是 2600。这意味着在这两个测试中,同时有2600个请求在运行。
2. 测试总时间
方案一测试:127.277秒
方案二测试:100.232秒 方案二测试所花费的时间较少,说明在相同条件下,方案二测试的性能表现更好。
3. 完成的请求数和失败的请求数
方案一测试:
完成请求:50000
失败请求:161(其中,长度错误86,异常75)
方案二测试:
完成请求:50000
失败请求:193(其中,长度错误104,异常89) 虽然方案二测试失败的请求数稍多,但总体上差别不大,成功完成的请求数是相同的。
4. 吞吐量(Requests per second)
方案一测试:392.84 [#/sec](每秒请求数)
方案二测试:498.84 [#/sec](每秒请求数) 方案二测试的每秒请求数更高,表明方案二测试的吞吐量更大。
5. 每个请求的平均时间(Time per request)
方案一测试:6618.391 ms(单个请求平均时间)
方案二测试:5212.075 ms(单个请求平均时间) 方案二测试的平均响应时间较短,说明系统在方案二测试中的响应速度更快。
6. 数据传输速率(Transfer rate)
方案一测试:49386.56 Kbytes/sec(传输速率)
方案二测试:62700.07 Kbytes/sec(传输速率) 方案二测试的数据传输速率明显更高,表明数据传输的效率更高。
7. 连接时间和处理时间(Connection Times and Processing Times)
方案一测试:
连接时间(Connect):平均 682 ms
处理时间(Processing):平均 2935 ms
等待时间(Waiting):平均 791 ms
总时间(Total):平均 3617 ms
方案二测试:
连接时间(Connect):平均 416 ms
处理时间(Processing):平均 1789 ms
等待时间(Waiting):平均 425 ms
总时间(Total):平均 2205 ms 方案二测试在各个阶段的时间都比方案一测试短,尤其是在处理时间和等待时间上,方案二测试的表现明显更好。
8. 百分比请求时间(Percentage of requests served within a certain time)
方案一测试:
50% 的请求在 3569 ms 内完成
95% 的请求在 4100 ms 内完成
98% 的请求在 5108 ms 内完成
99% 的请求在 6723 ms 内完成
方案二测试:
50% 的请求在 2030 ms 内完成
95% 的请求在 2924 ms 内完成
98% 的请求在 3025 ms 内完成
99% 的请求在 4159 ms 内完成 从这些数据可以看出,方案二测试的请求处理时间在各个百分比段都更短,表明其整体性能更优。
总结
综合来看,方案二测试在多数性能指标上表现优于方案一测试。尽管方案二测试失败的请求数略多,但在吞吐量、响应时间、数据传输速率等关键性能指标上,方案二测试都有明显的优势。
测压数据
方案一

方案二

第三轮(方案一 VS 方案二 VS 方案三)
Golang读取到的总数:49998、50000、50000
总体性能指标对比
每秒请求数 (Requests per second)
三:497.96
二:504.27
一:390.60
二和三的每秒请求数相对较高且接近,说明这两组测试的服务器在处理请求的速度上相对较快,而一的请求处理速度明显较慢。
每次请求的平均时间 (Time per request)
三:5221.332 ms
二:5155.985 ms
一:6656.427 ms
每次请求的平均时间中,二和三相对较短,一的时间最长,进一步说明一的服务器处理效率较低。
传输速率 (Transfer rate)
三:62612.02 Kbytes/sec
二:63403.17 Kbytes/sec
一:49108.18 Kbytes/sec
传输速率上,二略优于三,而一则明显较低,进一步表明二和三的服务器在数据传输上更高效。
连接时间 (Connection Times) 对比
连接时间 (Connect)
三:平均 464 ms
二:平均 454 ms
一:平均 766 ms
二和三在连接时间上相对较短且接近,而一的连接时间明显较长,可能表示一的服务器在建立连接方面存在瓶颈。
处理时间 (Processing)
三:平均 1722 ms
二:平均 1668 ms
一:平均 2872 ms
二和三在处理时间上相对较短且接近,而一的处理时间明显较长,表示其处理请求的效率较低。
等待时间 (Waiting)
三:平均 461 ms
二:平均 447 ms
一:平均 871 ms
二和三的等待时间较短,一的等待时间较长,这可能是导致一整体响应时间较长的原因之一。
请求时间百分比 (Percentage of requests served within a certain time) 对比
50%请求的时间
三:2031 ms
二:1983 ms
一:3511 ms
二和三的中位数请求时间相近且较短,一的中位数请求时间显著较长。
95%请求的时间
三:2921 ms
二:2916 ms
一:4139 ms
二和三在95%请求时间上也相近且较短,一显著较长。
最慢请求的时间
三:60077 ms
二:60094 ms
一:60076 ms
最慢请求时间都在60000 ms以上,表明在所有测试中都存在极端情况下的长时间请求。
失败请求数对比
失败请求数
三:289
二:482
一:502
三的失败请求数最少,二和一的失败请求数相对较多,表明三在处理高并发请求时更为稳定。
结论
综合上述分析,二和三的服务器在处理并发请求时表现相对较好,具有更快的响应时间和更高的处理效率,尤其在每秒请求数和传输速率上表现优异。而一的服务器在各项指标上表现较差,处理效率低且响应时间较长,同时失败请求数也较多。
具体到选择上,如果追求稳定性和较低的失败请求率,可以优先考虑三。如果更注重每秒请求数和传输速率,二也可以作为选择。
测压数据
方案一

方案二

方案三

第四轮(方案一 VS 方案二 VS 方案三)
Golangd读取到的请求总数:49996、50000、50000
基本信息对比
测试时间:方案一时间最长,为126.355秒;方案二和方案三相近,分别为100.668秒和101.768秒。
并发数:三组测试均为2600。
完成请求数:三组测试均为50000。
失败请求数:方案一为160,方案二为519,方案三为222。
每秒请求数
方案一:395.71次/秒
方案二:496.68次/秒
方案三:491.31次/秒
方案二的每秒请求数最高,方案三次之,方案一最低。
每个请求的平均时间
方案一:6570.450毫秒
方案二:5234.743毫秒
方案三:5291.927毫秒
方案一的平均时间最长,方案二和方案三相近且较短。
传输速率
方案一:49750.19 Kbytes/sec
方案二:62454.09 Kbytes/sec
方案三:61766.88 Kbytes/sec
方案二的传输速率最高,方案三次之,方案一最低。
连接时间对比
方案一:平均758毫秒,中位数636毫秒
方案二:平均472毫秒,中位数457毫秒
方案三:平均492毫秒,中位数491毫秒
方案二的连接时间最短,方案三次之,方案一最长。
处理时间对比
方案一:平均2786毫秒,中位数2787毫秒
方案二:平均1720毫秒,中位数1625毫秒
方案三:平均1773毫秒,中位数1672毫秒
方案二的处理时间最短,方案三次之,方案一最长。
总时间对比
方案一:平均3544毫秒,中位数3410毫秒
方案二:平均2192毫秒,中位数2090毫秒
方案三:平均2266毫秒,中位数2116毫秒
方案二的总时间最短,方案三次之,方案一最长。
百分比时间对比
50%请求完成时间:
方案一:3410毫秒
方案二:2090毫秒
方案三:2116毫秒
90%请求完成时间:
方案一:3824毫秒
方案二:2211毫秒
方案三:2382毫秒
99%请求完成时间:
方案一:6630毫秒
方案二:4243毫秒
方案三:4291毫秒
综合分析
性能表现:
每秒请求数:方案二表现最佳,其次是方案三,方案一表现最差。
每个请求的平均时间:方案二和方案三表现接近,均明显优于方案一。
传输速率:方案二最高,其次是方案三,方案一最低。
可靠性:
失败请求数:方案一最少,方案三次之,方案二最多。尽管方案二的性能表现最好,但可靠性最差,出现了更多的失败请求。
响应时间:
连接时间:方案二和方案三接近,均优于方案一。
处理时间:方案二最短,其次是方案三,方案一最长。
总时间:方案二表现最好,其次是方案三,方案一表现最差。
结论
如果需要更高的每秒请求数和传输速率,方案二是最佳选择,但需要注意其失败请求数较多。如果更注重请求的成功率和系统的稳定性,方案一相对更好,但性能表现较差。方案三则在性能和可靠性之间取得了相对平衡,适合对两方面都有要求的场景。
测压数据:
方案一

方案二

方案三

第五轮(方案一 VS 方案二 VS 方案三)
Golangd读取到的请求总数:49991、50000、49513
响应时间
平均每个请求的时间:
一: 6523.532 毫秒
二: 5239.594 毫秒
三: 5384.271 毫秒
方案二测试的响应时间最短,表明系统在该次测试中能够更快地处理请求。方案一测试的响应时间最长。
每秒处理请求数
每秒请求数:
一: 398.56 次
二: 496.22 次
三: 482.89 次
方案二测试每秒处理请求数最高,表明系统在该次测试中处理请求的能力最强。方案一测试的处理能力最弱。
失败请求数
失败请求数:
一: 281 次
二: 211 次
三: 158 次
方案三测试的失败请求数最少,表明系统在该次测试中的稳定性最好。方案一测试的失败请求数最多。
传输速率
传输速率:
一: 50095.98 Kbytes/sec
二: 62361.41 Kbytes/sec
三: 60708.94 Kbytes/sec
方案二测试的传输速率最高,表明在该次测试中,系统的数据传输效率最高。方案一测试的传输速率最低。
连接时间
连接时间 (平均):
一: 777 毫秒
二: 436 毫秒
三: 492 毫秒
方案二测试的平均连接时间最短,表明系统在该次测试中建立连接的效率最高。方案一测试的连接时间最长。
处理时间
处理时间 (平均):
一: 2734 毫秒
二: 1816 毫秒
三: 1875 毫秒
方案二测试的平均处理时间最短,表明系统在该次测试中处理请求的效率最高。方案一测试的处理时间最长。
等待时间
等待时间 (平均):
一: 894 毫秒
二: 437 毫秒
三: 507 毫秒
方案二测试的平均等待时间最短,表明系统在该次测试中等待处理的时间最少。方案一测试的等待时间最长。
百分位数
50% 响应时间:
一: 3302 毫秒
二: 2075 毫秒
三: 2194 毫秒
95% 响应时间:
一: 4542 毫秒
二: 2970 毫秒
三: 3380 毫秒
99% 响应时间:
一: 7199 毫秒
二: 4329 毫秒
三: 5024 毫秒
从这些数据可以看出,方案二测试中,大多数请求的响应时间较短,系统表现稳定。方案一测试中,响应时间波动较大,长尾响应时间较长。
综合分析
最佳表现:方案二测试在各项指标中表现最佳。它的响应时间最短,每秒处理请求数最多,失败请求数相对较少,连接时间、处理时间和等待时间都最短,且数据传输效率最高。
次佳表现:方案三测试表现次之。虽然失败请求数最少,但响应时间和每秒处理请求数稍逊于方案二测试。
最差表现:方案一测试在各项指标中表现最差。它的响应时间最长,每秒处理请求数最少,失败请求数最多,连接时间、处理时间和等待时间都最长,数据传输效率也最低。
综上所述,方案二测试的数据表明,系统在该条件下的处理性能和稳定性最优。因此,可以重点参考方案二测试的配置和条件,进一步优化系统性能。
压测数据:
方案一

方案二

方案三

新方案三 VS 方案二
方案二
平均值计算
总时间: (97.761 + 96.763 + 97.105) / 3 = 97.2097 秒
每秒请求数: (511.45 + 516.73 + 514.91) / 3 = 514.3633 [#/秒] (平均)
每个请求的时间: (5083.595 + 5031.679 + 5049.465) / 3 = 5054.2463 毫秒 (平均)
传输速率: (64300.06 + 64991.38 + 64757.78) / 3 = 64683.74 [Kbytes/秒]
失败请求总计
失败请求数: 399 + 91 + 261 = 751
连接时间
最小连接时间: 0 毫秒
平均连接时间: (446 + 418 + 383) / 3 = 415.6667 毫秒
连接时间标准差: 平均 214.1 毫秒 (从各次测试的标准差中获得)
中位数连接时间: 平均 417.6667 毫秒
处理时间
最小处理时间: 214 毫秒
平均处理时间: (1612 + 1555 + 1624) / 3 = 1597 毫秒
处理时间标准差: 平均 1999.2 毫秒 (从各次测试的标准差中获得)
中位数处理时间: 平均 1513.3333 毫秒
等待时间
最小等待时间: 3 毫秒
平均等待时间: (441 + 396 + 371) / 3 = 402.6667 毫秒
等待时间标准差: 平均 254.1 毫秒 (从各次测试的标准差中获得)
中位数等待时间: 平均 347 毫秒
总时间
最小总时间: 596 毫秒
平均总时间: (2058 + 1973 + 2007) / 3 = 2012.6667 毫秒
总时间标准差: 平均 1983.83 毫秒 (从各次测试的标准差中获得)
中位数总时间: 平均 1919.3333 毫秒
响应时间百分位
50% 响应时间: 平均 1919.3333 毫秒
66% 响应时间: 平均 1945.6667 毫秒
75% 响应时间: 平均 1985.3333 毫秒
80% 响应时间: 平均 2015 毫秒
90% 响应时间: 平均 2093.3333 毫秒
95% 响应时间: 平均 2407 毫秒
98% 响应时间: 平均 2656.6667 毫秒
99% 响应时间: 平均 3251.6667 毫秒
100% 响应时间: 平均 60058.6667 毫秒
传输数据
总传输量: (6436932584 + 6439695010 + 6439229674) / 3 = 6438619090 字节
HTML传输量: (6424732584 + 6427495010 + 6427029674) / 3 = 6426412422.67 字节
方案三
平均值计算
总时间: (99.938 + 96.860 + 97.556) / 3 = 98.118 秒
每秒请求数: (500.31 + 516.21 + 512.53) / 3 = 509.6833 [#/秒] (平均)
每个请求的时间: (5196.783 + 5036.724 + 5072.919) / 3 = 5102.142 毫秒 (平均)
传输速率: (62912.29 + 64892.90 + 64456.58) / 3 = 64087.9267 [Kbytes/秒]
失败请求总计
失败请求数: 179 + 370 + 316 = 865
连接时间
最小连接时间: 0 毫秒
平均连接时间: (442 + 380 + 458) / 3 = 426.6667 毫秒
连接时间标准差: 平均 219.4667 毫秒 (从各次测试的标准差中获得)
中位数连接时间: 平均 430.6667 毫秒
处理时间
最小处理时间: 181 毫秒
平均处理时间: (1712 + 1640 + 1567) / 3 = 1639.6667 毫秒
处理时间标准差: 平均 2127.27 毫秒 (从各次测试的标准差中获得)
中位数处理时间: 平均 1532.6667 毫秒
等待时间
最小等待时间: 2 毫秒
平均等待时间: (430 + 364 + 427) / 3 = 407 毫秒
等待时间标准差: 平均 258.6 毫秒 (从各次测试的标准差中获得)
中位数等待时间: 平均 345.3333 毫秒
总时间
最小总时间: 624 毫秒
平均总时间: (2154 + 2020 + 2025) / 3 = 2066.3333 毫秒
总时间标准差: 平均 2114.1667 毫秒 (从各次测试的标准差中获得)
中位数总时间: 平均 1943 毫秒
响应时间百分位
50% 响应时间: 平均 1943 毫秒
66% 响应时间: 平均 2005 毫秒
75% 响应时间: 平均 2035.3333 毫秒
80% 响应时间: 平均 2070.6667 毫秒
90% 响应时间: 平均 2241.6667 毫秒
95% 响应时间: 平均 2397.3333 毫秒
98% 响应时间: 平均 2848.3333 毫秒
99% 响应时间: 平均 3494 毫秒
100% 响应时间: 平均 60064.3333 毫秒
传输数据
总传输量: (6438232968 + 6436384256 + 6439049450) / 3 = 6437888891.33 字节
HTML传输量: (6426032968 + 6424184256 + 6426849450) / 3 = 6425688891.33 字节
综合数据对比分析
测试参数
单次请求数量: 50000
并发数量: 2,600
测试时间: 1,000 秒
服务器地址: 172.20.0.191
服务器端口: 80
文档路径: /
文档长度: 128,646 字节
平均值对比
失败请求总计对比
连接时间对比
处理时间对比
等待时间对比
总时间对比
响应时间百分位对比
传输数据对比
总结分析
总体性能:
方案三综合测试的总时间略高于方案二,意味着整体响应速度稍有下降。
方案三测试每秒处理的请求数稍低,意味着处理能力稍有减弱。
失败请求:
方案三测试的失败请求数增加,表明在高并发情况下,方案三测试的稳定性略差。
连接时间:
两次测试的最小连接时间相同,但方案三测试的平均连接时间和中位数连接时间均高于方案二测试,表明方案三测试在建立连接方面稍显劣势。
处理时间:
方案三测试的最小处理时间较低,但平均处理时间和中位数处理时间均高于方案二测试,表明方案三测试在处理请求的速度上稍有下降。
等待时间:
方案三测试的最小等待时间略低,但平均等待时间和中位数等待时间变化不大,说明等待时间影响不显著。
总时间:
方案三测试的最小总时间略高,平均总时间和中位数总时间均高于方案二测试,表明整体响应速度稍有下降。
响应时间百分位:
在关键的百分位响应时间上,方案三测试的各百分位响应时间均高于方案二测试,特别是在 90%、98%、99% 百分位上,差异更为明显,表明方案三测试在高并发情况下,响应时间波动更大。
传输数据:
方案三测试的总传输量和 HTML 传输量均略低于方案二,表明在数据传输效率上有小幅下降。
综上所述,方案二综合测试的数据整体性能稍优于方案三综合测试。方案三测试在高并发情况下,响应速度和稳定性稍有下降,特别是在连接时间和处理时间上,存在更大的波动。
联系邮箱:sales@99cdn.com
授权平台:www.99cdn.com
云平台:www.vmrack.com