背景
分别测试在windows平台和linux平台(SuSE)下,tornado框架的并发效果,以及通过配置nginx对并发效果影响。
- 操作系统:
- windows: Windows Server 2008 SP2 (8C8G)
- linux: SuSE12 SP3 (8C8G)
- 并发测试工具:tsung
- 测试访问:仅返回”Hello World”字符
评测过程
1、直接访问tornado,并发设置为500
- windows
Name | highest 10sec mean | lowest 10sec mean | Highest Rate | Mean Rate | Mean | Count |
---|---|---|---|---|---|---|
connect | 36.11 msec | 32.51 msec | 620.3 / sec | 138.53 / sec | 33.18 msec | 44464 |
page | 0.11 sec | 33.02 msec | 1221.1 / sec | 272.69 / sec | 76.98 msec | 87507 |
request | 0.11 sec | 33.02 msec | 1221.1 / sec | 272.69 / sec | 76.98 msec | 87507 |
session | 1mn 56sec | 8.66 sec | 14.8 / sec | 1.66 / sec | 12.64 sec | 498 |
Code | Highest Rate | Mean Rate | Total number |
---|---|---|---|
200 | 616 / sec | 138.70 / sec | 44536 |
Name | Highest Rate | Total number |
---|---|---|
error_abort | 0.333333333333333 / sec | 1 |
error_abort_max_conn_retries | 4.7 / sec | 104 |
error_abort_max_send_retries | 13.9 / sec | 394 |
error_connect_econnrefused | 35.8 / sec | 581 |
error_connection_closed | 35.7 / sec | 1023 |
- liunx
Name | highest 10sec mean | lowest 10sec mean | Highest Rate | Mean Rate | Mean | Count |
---|---|---|---|---|---|---|
connect | 0.21 sec | 30.57 msec | 760 / sec | 127.01 / sec | 34.44 msec | 41788 |
page | 0.21 sec | 30.97 msec | 1474.9 / sec | 247.78 / sec | 39.04 msec | 81576 |
request | 0.21 sec | 30.97 msec | 1474.9 / sec | 247.78 / sec | 39.04 msec | 81576 |
session | 2mn 43sec | 3.33 sec | 11.9 / sec | 1.66 / sec | 5.48 sec | 498 |
Code | Highest Rate | Mean Rate | Total number |
---|---|---|---|
200 | 762.6 / sec | 127.15 / sec | 41867 |
Name | Highest Rate | Total number |
---|---|---|
error_abort | 0.333333333333333 / sec | 1 |
error_abort_max_send_retries | 11.9 / sec | 498 |
error_connection_closed | 38.4 / sec | 1500 |
说明
在500的并发量下,无论在windows还是liunx平台,均有较多的连接错误。但框架系统还是比较稳定的,没有出现崩溃等情况。
2 、通过Nginx代理访问,并发设置为500
- windows
Name | highest 10sec mean | lowest 10sec mean | Highest Rate | Mean Rate | Mean | Count |
---|---|---|---|---|---|---|
connect | 0.18 sec | 31.78 msec | 2287.5 / sec | 588.11 / sec | 0.11 sec | 179083 |
page | 0.58 sec | 0.17 sec | 2283.4 / sec | 587.32 / sec | 0.36 sec | 178778 |
request | 0.58 sec | 0.17 sec | 2283.4 / sec | 587.32 / sec | 0.36 sec | 178778 |
Code | Highest Rate | Mean Rate | Total number |
---|---|---|---|
200 | 1736.4 / sec | 307.54 / sec | 94844 |
502 | 1122.9 / sec | 280.16 / sec | 84048 |
Name | Highest Rate | Total number |
---|---|---|
error_abort | 0.5 / sec | 1 |
- liunx
Name | highest 10sec mean | lowest 10sec mean | Highest Rate | Mean Rate | Mean | Count |
---|---|---|---|---|---|---|
connect | 0.17 sec | 32.16 msec | 801 / sec | 710.33 / sec | 73.15 msec | 216931 |
page | 0.69 sec | 0.16 sec | 798 / sec | 709.48 / sec | 0.58 sec | 216633 |
request | 0.69 sec | 0.16 sec | 798 / sec | 709.48 / sec | 0.58 sec | 216633 |
Code | Highest Rate | Mean Rate | Total number |
---|---|---|---|
200 | 794.9 / sec | 709.79 / sec | 216726 |
504 | 0.7 / sec | 0.04 / sec | 11 |
Name | Highest Rate | Total number |
---|---|---|
error_abort | 0.333333333333333 / sec | 1 |
说明
增加Nginx做反向代理之后,有效的提供了一定的缓冲。在windows平台下出现较多的
code 502
,说明后台没有及时返回,导致Nginx直接返回给压测工具code 502
。在linux平台下就比较稳定了。
3、通过Nginx代理访问,后端设置4台服务器,并发设置为1000
- windows
Name | highest 10sec mean | lowest 10sec mean | Highest Rate | Mean Rate | Mean | Count |
---|---|---|---|---|---|---|
connect | 0.20 sec | 35.78 msec | 4122.2 / sec | 508.31 / sec | 0.12 sec | 156715 |
page | 0.48 sec | 74.59 msec | 4109.8 / sec | 506.99 / sec | 0.28 sec | 156275 |
request | 0.48 sec | 74.59 msec | 4109.8 / sec | 506.99 / sec | 0.28 sec | 156275 |
Code | Highest Rate | Mean Rate | Total number |
---|---|---|---|
200 | 4115.6 / sec | 507.68 / sec | 156481 |
Name | Highest Rate | Total number |
---|---|---|
error_abort | 0.333333333333333 / sec | 1 |
- liunx
Name | highest 10sec mean | lowest 10sec mean | Highest Rate | Mean Rate | Mean | Count |
---|---|---|---|---|---|---|
connect | 0.21 sec | 36.22 msec | 4786.7 / sec | 533.37 / sec | 0.12 sec | 163256 |
page | 0.50 sec | 73.71 msec | 4784.9 / sec | 532.57 / sec | 0.29 sec | 162988 |
request | 0.50 sec | 73.71 msec | 4784.9 / sec | 532.57 / sec | 0.29 sec | 162988 |
Code | Highest Rate | Mean Rate | Total number |
---|---|---|---|
200 | 4792.2 / sec | 533.28 / sec | 163199 |
Name | Highest Rate | Total number |
---|---|---|
error_abort | 0.333333333333333 / sec | 1 |
说明
由于后台扩充到了4台服务器,通过Nginx进行轮询访问,分散了压力。在1000的并发下,windows和suse平台表现不相上下,均无错误。
4、通过Nginx代理访问,后端设置4台服务器,并发设置为1500
- windows
Name | highest 10sec mean | lowest 10sec mean | Highest Rate | Mean Rate | Mean | Count |
---|---|---|---|---|---|---|
connect | 0.19 sec | 32.09 msec | 2576 / sec | 1075.47 / sec | 0.10 sec | 327195 |
page | 0.50 sec | 71.39 msec | 2602.4 / sec | 1073.57 / sec | 0.31 sec | 326577 |
request | 0.50 sec | 71.39 msec | 2602.4 / sec | 1073.57 / sec | 0.31 sec | 326577 |
Code | Highest Rate | Mean Rate | Total number |
---|---|---|---|
200 | 2502.1 / sec | 1001.18 / sec | 304862 |
502 | 770.7 / sec | 84.82 / sec | 22052 |
Name | Highest Rate | Total number |
---|---|---|
error_abort | 0.333333333333333 / sec | 1 |
- liunx
Name | highest 10sec mean | lowest 10sec mean | Highest Rate | Mean Rate | Mean | Count |
---|---|---|---|---|---|---|
connect | 0.20 sec | 33.41 msec | 3275.7 / sec | 990.22 / sec | 0.11 sec | 299354 |
page | 0.48 sec | 68.46 msec | 3270.3 / sec | 988.43 / sec | 0.27 sec | 298777 |
request | 0.48 sec | 68.46 msec | 3270.3 / sec | 988.43 / sec | 0.27 sec | 298777 |
Code | Highest Rate | Mean Rate | Total number |
---|---|---|---|
200 | 3261.5 / sec | 989.09 / sec | 298975 |
Name | Highest Rate | Total number |
---|---|---|
error_abort | 0.333333333333333 / sec | 1 |
- 说明
当并发增加到1500时,windows平台出现code 502
,后端服务器出现瓶颈。linux平台表现稳定。
5、通过Nginx代理访问,后端设置4台服务器,并发设置为2000
- liunx
Name | highest 10sec mean | lowest 10sec mean | Highest Rate | Mean Rate | Mean | Count |
---|---|---|---|---|---|---|
connect | 19.30 sec | 36.06 msec | 2187.66666666667 / sec | 611.56 / sec | 0.48 sec | 166002 |
page | 19.36 sec | 0.14 sec | 2197 / sec | 611.42 / sec | 0.57 sec | 165828 |
request | 19.36 sec | 0.14 sec | 2197 / sec | 611.42 / sec | 0.57 sec | 165828 |
Code | Highest Rate | Mean Rate | Total number |
---|---|---|---|
200 | 2194.66666666667 / sec | 611.54 / sec | 172473 |
Name | Highest Rate | Total number |
---|---|---|
error_abort | 0.333333333333333 / sec | 1 |
error_connect_etimedout | 17.1 / sec | 318 |
error_next_session | 0.285714285714286 / sec | 2 |
说明
在2000并发先,linux平台后端依旧稳定返回
code 200
,但是Nginx会直接返回error,瓶颈出现在Nginx,需要调整相关配置了。
结论
这次测试中可以发现,当仅返回字符串Hello World
时,无论是windows平台还是liunx平台,在并发500的情况下虽然框架可以稳定输出,但是会出现不同程度的系统处理不过来直接拒绝请求的情况。
通过增加Nginx,可以有效的为后端提供缓冲,同样500的并发下,liunx平台返回给Nginx的错误code 504
要明显比windows平台code 502
少很多。
通过增加后台服务器,使用Nginx进行轮询,可以增加并发,在后端4台服务器,1000的并发下,linux平台和windows平台表现不相上下。但并发增加到1500之后,windows平台开始出现大量的code 502
错误,linux平台依旧稳定。把并发继续增加到2000,Nginx端出现瓶颈,返回连接错误,后端linux保持稳定。可考虑下通过调整Nginx配置或者增加Nginx来继续提升并发效果。
不过,从上述测试情况来看,torando框架还是很稳定的,不至于并高并发弄到崩溃的程度。