python怎么测试uwsgi并发量_nginx连接python+django,测试uWSGI和fastcgi性能

本文详细介绍了在服务器上安装和配置uWSGI与fastcgi的步骤,并进行了性能测试。通过压力测试工具ab,对比了uWSGI和fastcgi在并发请求、响应时间和资源消耗上的表现,结果显示uWSGI在各项指标上优于fastcgi。
摘要由CSDN通过智能技术生成

【编写测试:张子萌2011-4-19】

当前状况是nginx0.9、pcre、python2.6、Mysql-python、Django已经安装完毕。

nginx已经安装在/program/nginx目录中。项目位置:/program/www/mysite。

首先验证uWSGI。

1、开始安装uWSGI,uwsgi地址。

http://projects.unbit.it/uwsgi/

下载

# wget http://projects.unbit.it/downloads/uwsgi-0.9.7.2.tar.gz

# tar zxvf uwsgi-0.9.7.2.tar.gz

# cd uwsgi-0.9.7.2

# make

# cp uwsgi /usr/bin

2、Nginx配置,只列出主要部分部分。nginx默认已经支持uWSGI和fastcgi。

server部分如下

server {

listen80;

server_name localhost 172.27.224.235;

location / {

uwsgi_pass127.0.0.1:9000;

includeuwsgi_params;

access_logoff;

}

}

3、UWSGI配置,参数部分按照实际修改。

# mkdir -p /program/uwsgi

# mkdir -p /program/mysite/logs

# cd /program/uwsgi

# vi uwsgi.xml

内容如下:

127.0.0.1:9000#设定监听ip和端口

4#worker模式支持多线程和多进程混合模型的MPM

#如果对work和prefork工作模式不清楚自行查资料

4#使用进程数

100#监听满后排队数量,超过排队数量服务将会拒绝连接

true#主线程enable

/program/uwsgi/uwsgi.pid#产生主进程号的位置

/program/mysite#项目的目录位置

django_uwsgi#模块信息,下一步中会编辑这个文件

true

true#打印内存请求日志信息

true#开启多线程

true#每行都用string格式打印时间

512#uwsgi需要使用内存的量,如当前配置为512M

/program/mysite/logs/django.log#此进程打印日志的位置

4、创建应用模块

# cd /program/mysite

# vi django_uwsgi.py

import os,sys

import django.core.handlers.wsgi

os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘testsite.settings’

path = ‘/program‘###此处是防止找不到模块

if path not in sys.path:

sys.path.append(path)

print sys.path

application = django.core.handlers.wsgi.WSGIHandler()

5、启动服务

#/usr/bin/uwsgi -x /program/uwsgi/uwsgi.xml

启动nginx

6、查看进程

#[liuts@webserver nginx]# ps -ef|grep uwsgi|grep -v grep

root2586710 19:41 ?00:00:00 /usr/bin/uwsgi -x /program/uwsgi/uwsgi.xml

root25868 258670 19:41 ?00:00:00 /usr/bin/uwsgi -x /program/uwsgi/uwsgi.xml

root25869 258670 19:41 ?00:00:00 /usr/bin/uwsgi -x /program/uwsgi/uwsgi.xml

root25870 258670 19:41 ?00:00:00 /usr/bin/uwsgi -x /program/uwsgi/uwsgi.xml

root25871 258670 19:41 ?00:00:00 /usr/bin/uwsgi -x /program/uwsgi/uwsgi.xml

7、查看监听端口

#[liuts@webserver nginx]# netstat -an|grep 9000

Tcp 0 127.0.0.1:9000 0.0.0.0:* LISTEN

8、访问测试

输入http://yourserverip/

注:附件中有启停uwsgi脚本,方便启停使用。

再次验证fastcgi。

使用fastcgi需要安装flup,flup是一个用python写的web server。

1、安装flup

下载地址

#tar zxvf flup-1.0.2.tar.gz

#cd flup-1.0.2

#python setup.py install

2、修改nginx配置

http部分,参数自己优化

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

fastcgi_pass 127.0.0.1:8000;

include fastcgi_params;

3、启动fastcgi

# /p

4、查看端口进程

#[liuts@webserver nginx]# netstat -an|grep 8000

Tcp 0 127.0.0.1:8000 0.0.0.0:* LISTEN

5、访问测试

输入http://yourserverip/

两个模块调试正常做个测试看看。

我用的是笔记本的虚拟机做的,虚拟机参数如下:

Cpu参数

processor: 0

vendor_id: GenuineIntel

cpu family: 6

model: 15

model name: Intel(R) Core(TM)2 Duo CPUT5870@ 2.00GHz

内存参数:

MemTotal:1034708 kB

Cached:318512 kB

测试工具使用apache自带的ab压力测试工具。使用并发1000,连续60秒进行测试。

测试页面脚本如下,服务接到请求后首先获取系统时间,再做一个6到10的随机数累加,然后将信息返回给客户。

from django.http import HttpResponse

import datetime

importrandom

importMySQLdb

def current_datetime(request):

now = datetime.datetime.now()

html = “now %s. n” % now

########

r=random.randint(6,10)

html2=0

for i in range(r):

html2 = html2 + i

html=html+”==”+str(html2)+”==”

########

return HttpResponse(html)

uWSGI测试结果

Complete requests:42055

并发数:697.29 [#/sec]

平均返回相应时间:1.434 [ms]

传输量:135.18 [Kbytes/sec]

Cpu系统使用量平均:84%

Cpu用户使用量平均:16%

内存使用量:512M

Fastcgi测试结果

测试时长:60.004 seconds

Complete requests:32270

并发数:537.80 [#/sec]

平均返回相应时间:1.859 [ms]

传输量:385.16 [Kbytes/sec]

Cpu系统使用量平均:51%

Cpu用户使用量平均:49%

内存使用量:500M

结论:

各项测试uWSGI明显优于Fastcgi。具体参数优化需要根据业务编写,然后再做测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值