gunicorn并发测试

最近发现web服务器的压力越来越大,想测试一下gunicorn的并发能力如何。

 

我测试了网站最简单的about页面,首先不考虑并发的情况,对这个页面本身进行测试,平均响应时间20ms。

单个并发    qps =50 (1000ms/20ms)
10个并发  qps =400
20个并发 qps =500~550
30个并发 qps =500~550

说明gu的并发能力只有10左右(我怀疑等于cpu核数),再往上增加并发,平均耗时也随之增加,QPS没有提高。

 

下面是详细测试过程:

 

测试环境

gunicorn 0.14.6

gevent    0.13.8

python:    2.7.2

cpu:  Intel(R) Xeon(R) CPU    E5620  @ 2.40GHz  16个cpu

内存 16g

 

 

一.测试最简单的django框架页面

测试代码:

views.py:

from django.shortcuts import render_to_response
from django.template.context import RequestContext
import threading
from datetime import datetime

def test(request):
   return render_to_response("index.html", {"result":"this text is build  by python,now is  %s"%(datetime.now())},context_instance=RequestContext(request))

 

 template:

hello {{result}}
 

测试结果:

单个平均响应时间:2ms

单个并发:      500qps

10个并发:     4000qps

50个并发:     5000qps


gunicorn并发测试_第1张图片


gunicorn并发测试_第2张图片

 

二.测试纯gunicorn

myapp.py

from datetime import datetime

def app(environ, start_response):
  data = "this text is build  by python,now is  %s"%(datetime.now())
  start_response("200 OK", [
      ("Content-Type", "text/plain"),
      ("Content-Length", str(len(data)))
  ])
  return iter([data])

 gunicorn -w 12 -k gevent myapp:app  -b 127.0.0.1:8181

 

测试结果:

单个平均响应时间:0.5ms

单个并发:      1800 qps

10个并发:     10494 qps

50个并发:     11218 qps

 


gunicorn并发测试_第3张图片
 
gunicorn并发测试_第4张图片

 

 

三.测试detail页面

ab -n100  http://127.0.0.1:7299/people/mblog/46320325/detail/

 

测试结果:

单个平均响应时间:228ms

单个并发:      4.37 qps

10个并发:     38 qps

50个并发:     46.67 qps


gunicorn并发测试_第5张图片
 

 
gunicorn并发测试_第6张图片
 
gunicorn并发测试_第7张图片

你可能感兴趣的:(并发)