gunicorn vs uwsgi 性能对比,以flask run为基准

gunicorn vs uwsgi 性能对比,以flask run为基准

之前一直在用gunicorn,这次折腾新项目突发奇想来对比下flask run \gunicorn\uwsgi的性能。不是非常严谨的测试,希望也能有一定的参考意义,结果也很有意思。

gunicorn很火,uwsgi以前用的人多,但是现在少了感觉不怎么听到,这东西是用c写的,带了光环的。flask run这里只是作为基准参考,压力测试工具为ab test,前置了nginx把静态文件剥离了,两者都使用unix domain socket通信隔离了http微乎其微的影响,两者都是用了2process+2thread,压力为100-1000。下面是三种方式的结果:

#基准flask run 100-1000

Server Software: nginx

Server Hostname: xxx

Server Port: 443

SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256

Document Path: /

Document Length: 6223 bytes

Concurrency Level: 100

Time taken for tests: 7.418 seconds

Complete requests: 1000

Failed requests: 0

Total transferred: 6489000 bytes

HTML transferred: 6223000 bytes

Requests per second: 134.81 [#/sec] (mean)

Time per request: 741.790 [ms] (mean)

Time per request: 7.418 [ms] (mean, across all concurrent requests)

Transfer rate: 854.27 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 5 47 69.2 6 296

Processing: 231 662 186.7 679 1736

Waiting: 231 662 186.7 679 1736

Total: 241 709 159.6 702 1742

Percentage of the requests served within a certain time (ms)

50% 702

66% 735

75% 788

80% 821

90% 881

95% 958

98% 1111

99% 1178

100% 1742 (longest request)

# uwsgi result

Server Software: nginx

Server Hostname: erp.ljmold.cn

Server Port: 443

SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256

Document Path: /user/login

Document Length: 6223 bytes

Concurrency Level: 100

Time taken for tests: 9.741 seconds

Complete requests: 1000

Failed requests: 0

Total transferred: 6489000 bytes

HTML transferred: 6223000 bytes

Requests per second: 102.66 [#/sec] (mean)

Time per request: 974.096 [ms] (mean)

Time per request: 9.741 [ms] (mean, across all concurrent requests)

Transfer rate: 650.54 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 5 130 246.7 9 1750

Processing: 4 533 732.3 437 7584

Waiting: 4 533 732.3 437 7584

Total: 9 664 765.4 473 7742

Percentage of the requests served within a certain time (ms)

50% 473

66% 656

75% 751

80% 858

90% 1272

95% 1719

98% 2526

99% 4081

100% 7742 (longest request)

#gunicorn 100-1000

Server Software: nginx

Server Hostname: erp.ljmold.cn

Server Port: 443

SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256

Document Path: /user/login

Document Length: 6223 bytes

Concurrency Level: 100

Time taken for tests: 9.678 seconds

Complete requests: 1000

Failed requests: 0

Total transferred: 6489000 bytes

HTML transferred: 6223000 bytes

Requests per second: 103.33 [#/sec] (mean)

Time per request: 967.779 [ms] (mean)

Time per request: 9.678 [ms] (mean, across all concurrent requests)

Transfer rate: 654.79 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 4 82 233.2 6 2275

Processing: 4 584 891.2 306 7272

Waiting: 4 584 891.4 303 7272

Total: 10 667 907.5 389 7278

Percentage of the requests served within a certain time (ms)

50% 389

66% 573

75% 682

80% 868

90% 1487

95% 2506

98% 3374

99% 4788

100% 7278 (longest request)

总共耗时上差的微乎其微,这点差别不能说明什么;两者都完成了所有请求,这里说一下,之所以选1000就是因为2000两种方式都会崩溃;平均时间uwsgi胜出,这里差别不明显,但是也说明总体性能上uwsgi做的彻底;连接时间上,两者明显在1000下都吃力了,但是uwsgi表现更好,除了c我觉得使用uwsgi自己的协议也有关系;最后也是最重要的,在高并发下,明显uwsgi的表现更好一点,很有意思的是在80%以下的正常流量范围内反倒gunicorn更好,而且效果显著,100ms还是比较可观的,我想这才是大家都用gunicorn的主要原因吧。

最后别人说的总归是片面,还是自己动手对性能有更全面的了解。顺便说一下对flask自带的小服务器刮目相看

Post Views: 7,232

相关文章

猎鹰计划(Falcon Plan)帐篷报价
365bet备用开户

猎鹰计划(Falcon Plan)帐篷报价

📅 07-21 👁️ 9996
红豆杉怎么扦插繁殖
365betapp投注

红豆杉怎么扦插繁殖

📅 06-27 👁️ 2158
灰鼠折叠自行车
盒子365app下载

灰鼠折叠自行车

📅 06-30 👁️ 7312
裁决之镰多久重置
盒子365app下载

裁决之镰多久重置

📅 07-12 👁️ 6286
小米怎么关闭语音功能
365betapp投注

小米怎么关闭语音功能

📅 07-27 👁️ 781
《绝地求生大逃杀》游戏常见问题汇总
365bet备用开户

《绝地求生大逃杀》游戏常见问题汇总

📅 07-04 👁️ 4031