启动uwsgi
启动uwsgi有两种方式,一是命令行方式,另一种是配置文件方式,下面分别介绍。
命令行
将应用部署在9090端口,其中start.py是启动脚本
uwsgi --http :9090 --wsgi-file start.py
并发
默认启动,uwsgi启动一个进程和一个线程。
使用--processes 参数指定进程数量。
使用--threads 参数指定线程数量。
进程和线程数量可以同时指定。
uwsgi --http :9090 --wsgi-file start.py --master --processes 4 --threads 2
关于Python中的线程:
如果在不设置线程的情况下启动uwsgi,那么python GIL将不会启动,所以应用不会运行。
这么做的原因是uwsgi是一个通用服务器,还需要考虑到其他语言特性。
而python GIL是python特性,所以需要注意。
监控
在生产部署时,stats子系统允许将uwsgi的内部统计数据作为JSON导出。
uwsgi --http :9090 --wsgi-file start.py --master --processes 4 --threads 2 --stats 127.0.0.1:9090
可用性
当所有的worker进程都被占用了(请求阻塞),而应用无法接受更多的请求了。
为了避免这个问题,可以设置一个“harakiri”定时器。
harakiri是一个监控器,由uwsgi master进程管理,会摧毁卡住超过指定秒数的进程。
例如在配置文件中加一行:
harakiri = 30
此外,在1.9版本以后,stats服务器导出了全部请求变量。
因此,你可以看到你的实例正在做什么。