django部署(uwsgi+nginx),内有测试数据

部署django用nginx+uwsgi的,我的服务器是双核CPU,内存4G,在UWSGI里开启100个线程进行测试 
#数据库是mysql5.1(没有用集群和读写分离),就是普通的inndb表类型,数据库放在另外一台服务器 
#下面是测试数据:

# ##########################################################华丽分割线 

#时间(s) 客户端数 完成请求数 出错率(502错误) 是否连接数据库 测试期间web访问状态 每秒处理请求数 
3600 5000 3370706 1.40% Y 正常访问,速度很快 936 
3600 5000 3353730 1.42% Y 正常访问,速度很快 931 
1800 500 1672610 0.05% Y 正常访问,速度很快 929 
3600 10000 1679068+1756774 3.16% Y 正常访问,速度很快(但有时候会卡一下) 954 
3600 500 1670963+1699892 0.05% Y 正常访问,速度很快 936 
60 500 223033 0% N 正常访问,速度很快 3717 
600 5000 1840949 0.4% N 正常访问,速度很快 3068 
600 10000 803311+799297 0.7% N 正常访问,速度很快(但有时候会卡一下) 2671 


# ##########################################################华丽分割线 



#请问有什么方法可以提高性能,我用的是 
#nginx配置文件: 
# ##########################################################华丽分割线 

#user nobody; 
worker_processes 2; 
worker_cpu_affinity 00000001 00000010; 
worker_rlimit_nofile 65535; 
 
events { 
 use epoll; 
 worker_connections 65535; 
} 
 
 
http { 
 include mime.types; 
 default_type application/octet-stream; 
 
 sendfile on; 
 
 keepalive_timeout 65; 
 
 uwsgi_connect_timeout 120; 
 uwsgi_send_timeout 180; 
 uwsgi_read_timeout 180; 
 
 open_file_cache max=65535 inactive=20s; 
 open_file_cache_min_uses 1; 
 open_file_cache_valid 30s; 
 
 #gzip on; 
 
 server { 
 listen 82; 
 server_name jasonwu.me; 
 access_log /home/workspace/Project/logs/access.log; 
 error_log /home/workspace/Project/logs/error.log; 
 location / { 
 root /home/workspace/Project; 
 uwsgi_pass 127.0.0.1:8000; 
 include uwsgi_params; 
 } 
 
 location ^~ /site_media { 
 alias /home/workspace/OBJ/media; 
 access_log /home/workspace/Project/logs/access.log; 
 error_log /home/workspace/Project/logs/error.log; 
 } 
 
 location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov) { 
 access_log off; 
 expires 30d; 
 } 
 } 
} 


# ##########################################################华丽分割线 



#uwsgi的配置文件(uwsgi.xml): 
# #########################################################华丽分割线

# <uwsgi>
#
# <socket>127.0.0.1:8000</socket>
#
# <!--socket-timeout>4</socket-timeout--> #socket等待时间,如果超出这个时间就不返回500页面, 默认是4秒
#
# <listen>128</listen> #每个线程的socket处理队列--默认最高128, 可以修改内核(见修改openfile文件), 修改内核后这个值也不适合修改的太高,最多200
#
# <master/> #启动主控进程
#
# <processes>50</processes> #开启2个进程(双核)
#
# <max-requests>10000</max-requests> #当每个进程达到10000请求后将重启这个进程
#
# <module>django_wsgi</module> #你的配置文件
#
# <!--profiler/-->
#
# <buffer-size>4096</buffer-size> #默认每个页面是4K
#
# <harakiri>10</harakiri> #如果一个进程处理一个请求超过10秒,则重启这个进程
#
# <post-buffering>4096</post-buffering> #对应harakiri
#
# <memory-report/> #内存报告
#
# <enable-threads/>
#
# <limit-as>2048</limit-as> #限制内存空间1024M
#
# <!--async>100</async--> #使用async模式来运行,这里要注意一下,
#
# 如果你的app的是no-async-friendly 那就不要用这个模式
# <disable-logging/>
#
# <!--daemonize>/home/workspace/OBJ/logs/uwsgi.log</daemonize-->
#
# </uwsgi>

# #########################################################华丽分割线 


# ubuntu内核我已经优化(修改过openfile,socket队列数等) 
# django优化只做了模板缓存 
# mysql连接数没有进行优化,因为django连接数据库是一个线程一个常连接在内存里,所以一共也就是100个连接(因为我开的100个线程)


分享到: 微信 更多