【编写测试:张子萌 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 {
listen 80;
server_name localhost 172.27.224.235;
location / {
uwsgi_pass 127.0.0.1:9000;
include uwsgi_params;
access_log off;
}
}
3、UWSGI配置,参数部分按照实际修改。
# mkdir -p /program/uwsgi
# mkdir -p /program/mysite/logs
# cd /program/uwsgi
# vi uwsgi.xml
内容如下:
#如果对work和prefork工作模式不清楚自行查资料
每行都用string格式打印时间
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
root 25867 1 0 19:41 ? 00:00:00 /usr/bin/uwsgi -x /program/uwsgi/uwsgi.xml
root 25868 25867 0 19:41 ? 00:00:00 /usr/bin/uwsgi -x /program/uwsgi/uwsgi.xml
root 25869 25867 0 19:41 ? 00:00:00 /usr/bin/uwsgi -x /program/uwsgi/uwsgi.xml
root 25870 25867 0 19:41 ? 00:00:00 /usr/bin/uwsgi -x /program/uwsgi/uwsgi.xml
root 25871 25867 0 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
下载地址
# wget http://www.saddi.com/software/flup/dist/flup-1.0.2.tar.gz
#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;
location部分
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 CPU T5870 @ 2.00GHz
内存参数:
MemTotal: 1034708 kB
Cached: 318512 kB
测试工具使用apache自带的ab压力测试工具。使用并发1000,连续60秒进行测试。
测试页面脚本如下,服务接到请求后首先获取系统时间,再做一个6到10的随机数累加,然后将信息返回给客户。
from django.http import HttpResponse
import datetime
import random
import MySQLdb
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。具体参数优化需要根据业务编写,然后再做测试。
发表评论