1 请求并发数目较大时,接收到的数目小于发送的数目
1.1
描述:uwsgi正常返回302跳转
ab -n 5000 -c 250 -g test.log "192.168.50.20:9033/Mapping.do?×××××××&as=1234567"
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.50.20 (be patient) Completed 500 requests Completed 1000 requests Completed 1500 requests Completed 2000 requests Completed 2500 requests Completed 3000 requests Completed 3500 requests Completed 4000 requests Completed 4500 requests Finished 5000 requests Server Software: Server Hostname: 192.168.50.20 Server Port: 9033 Document Path: /Mapping.do?bfd_nid=behe&as=1234567 Document Length: 0 bytes Concurrency Level: 250 Time taken for tests: 12.107652 seconds Complete requests: 5000 Failed requests: 0 Write errors: 0 Non-2xx responses: 4990 Total transferred: 2095800 bytes HTML transferred: 0 bytes Requests per second: 412.96 [#/sec] (mean) Time per request: 605.383 [ms] (mean) Time per request: 2.422 [ms] (mean, across all concurrent requests) Transfer rate: 168.98 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 42.5 0 3000 Processing: 18 466 1595.9 151 12083 Waiting: 0 446 1536.9 150 12083 Total: 18 467 1601.7 151 12106 Percentage of the requests served within a certain time (ms) 50% 151 66% 165 75% 198 80% 251 90% 389 95% 485 98% 9008 99% 12036 100% 12106 (longest request)按照上边的结果所示,发送了5000个请求,4990个非2xx相应(Non-2xx responses: 4990)
而查看uwsgi.log发现也只接收到4990个请求。
1.2 只要降低并发就不会出现这样的问题
ab -n 50000 -c 100 -g test.log "192.168.50.20:9033/Mapping.do?bfd_nid=behe&as=1234567"
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.50.20 (be patient) Completed 5000 requests Completed 10000 requests Completed 15000 requests Completed 20000 requests Completed 25000 requests Completed 30000 requests Completed 35000 requests Completed 40000 requests Completed 45000 requests Finished 50000 requests Server Software: Server Hostname: 192.168.50.20 Server Port: 9033 Document Path: /Mapping.do?bfd_nid=behe&as=1234567 Document Length: 0 bytes Concurrency Level: 100 Time taken for tests: 85.735172 seconds Complete requests: 50000 Failed requests: 0 Write errors: 0 Non-2xx responses: 50000 Total transferred: 21000000 bytes HTML transferred: 0 bytes Requests per second: 583.19 [#/sec] (mean) Time per request: 171.470 [ms] (mean) Time per request: 1.715 [ms] (mean, across all concurrent requests) Transfer rate: 239.19 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 1.0 0 186 Processing: 4 170 123.1 136 1592 Waiting: 4 170 123.0 136 1592 Total: 4 170 123.1 136 1592 Percentage of the requests served within a certain time (ms) 50% 136 66% 148 75% 159 80% 169 90% 265 95% 403 98% 540 99% 650 100% 1592 (longest request)1.3 调大listen参数解决问题。
当listen参数变大时,可以提高并发的数目。按道理增大processes数量和增大listen队列长度都可以增大并发能力。但是好像使用listen参数,效果比较显著。难道是后端处理速度太慢,需要缓存更多?
uwsgi.ini:
[uwsgi]
http=0.0.0.0:9033 master=true pythonpath=../ module=api processes=30 listen=512 daemonize=uwsgi.log pidfile=uwsgi.pid vacuum=true harakiri=5 harakiri-verbose=true buffer-size=163842
uwsgi.ini:
[uwsgi]
#http=192.168.40.11:9034 http=0.0.0.0:9034 master=true pythonpath=../ module=breapi processes=32 listen=512 daemonize=./logs/uwsgi.log pidfile=uwsgi.pid vacuum=true harakiri=5 harakiri-verbose=true buffer-size=16384 stats = $(HOSTNAME):1734测试:
ab -n 30000 -c 1000 -g test.log "192.168.40.11:9034/Mapping.do?bfd_nid=behe&as=1234567"
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking 192.168.40.11 (be patient) Completed 3000 requests Completed 6000 requests Completed 9000 requests Completed 12000 requests Completed 15000 requests Completed 18000 requests Completed 21000 requests Completed 24000 requests Completed 27000 requests Finished 30000 requests Server Software: Server Hostname: 192.168.40.11 Server Port: 9034 Document Path: /Mapping.do?bfd_nid=behe&as=1234567 Document Length: 0 bytes Concurrency Level: 1000 Time taken for tests: 12.411582 seconds Complete requests: 30000 Failed requests: 0 Write errors: 0 Non-2xx responses: 29994 Total transferred: 12597480 bytes HTML transferred: 0 bytes Requests per second: 2417.10 [#/sec] (mean) Time per request: 413.719 [ms] (mean) Time per request: 0.414 [ms] (mean, across all concurrent requests) Transfer rate: 991.17 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 4 99.8 0 3000 Processing: 43 299 983.0 126 9234 Waiting: 0 297 976.9 125 9234 Total: 50 304 993.5 126 12070 Percentage of the requests served within a certain time (ms) 50% 126 66% 129 75% 132 80% 134 90% 141 95% 616 98% 3222 99% 3632 100% 12070 (longest request)