摘自:http://my.oschina.net/guol/blog/121418
uwsgi配置/etc/uwsgi/apps-enabled/default.xml
02 | <plugin>python</plugin> |
03 | <socket>127.0.0.1:9001</socket> |
04 | <pythonpath>/var/www/example/app/</pythonpath> |
06 | <script>wsgi_configuration_module</script> |
09 | <processes>4</processes> |
10 | <reload-mercy>8</reload-mercy> |
11 | <cpu-affinity>1</cpu-affinity> |
12 | <max-requests>2000</max-requests> |
13 | <limit-as>512</limit-as> |
14 | <reload-on-as>256</reload-on-as> |
15 | <reload-on-rss>192</reload-on-rss> |
uwsgi配置文件中的参数也可以在命令行通过uwsgi指定,配置文件除了xml格式外,还可以写成ini格式的,软件包安装完毕后在/usr/share/doc/uwsgi/examples/conffile目录下会有一些xml和ini格式配置文件的例子。
wsgi_configuration_module.py脚本内容
04 | sys.path.append( '/var/www/example/app' ) |
05 | os.environ[ 'PYTHON_EGG_CACHE' ] = '/var/www/example/.python-egg' |
06 | def application(environ, start_response): |
08 | output = 'Hello World!' |
09 | response_headers = [( 'Content-type' , 'text/plain' ), |
10 | ( 'Content-Length' , str(len(output)))] |
11 | start_response(status, response_headers) |
启动uwsgi
1 | uwsgi -x /etc/uwsgi/apps-enabled/default.xml --daemonize /var/log/uwsgi/app/default.log |
uwsgi 的参数:
-M 开启Master进程
-p 4 开启4个进程
-s 使用的端口或者socket地址
-d 使用daemon的方式运行, 注意, 使用-d后, 需要加上log文件地址, 比如-d /var/log/uwsgi.log
-R 10000 开启10000个进程后, 自动respawn下
-t 30 设置30s的超时时间, 超时后, 自动放弃该链接
–limit-as 32 将进程的总内存量控制在32M
-x 使用配置文件模式
并发4个线程
uwsgi -s :9090 -w myapp -p 4
主控制线程+4个线程
uwsgi -s :9090 -w myapp -M -p 4
执行超过30秒的client直接放弃
uwsgi -s :9090 -w myapp -M -p 4 -t 30
限制内存空间128M
uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128
服务超过10000个req自动respawn
uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128 -R 10000
后台运行等
uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128 -R 10000 -d uwsgi.log
除了直接用uwsgi命令启动外,还可以用init.d下的脚本启动, 不过需先修 改/etc/default/u wsgi中默认配置文件的路径,然后通过/etc/init.d/uwsgi start启动
2 | INHERITED_CONFIG=/etc/uwsgi/apps-enabled/default.xml |