码迷,mamicode.com
首页 > 其他好文 > 详细

uwsgi 使用随笔

时间:2016-07-06 20:04:20      阅读:364      评论:0      收藏:0      [点我收藏+]

标签:

uwsgi, wsgi协议的一个很好的实现,源码在这里:https://github.com/unbit/uwsgi

c语言编写,有兴趣可以研究下。

 

DEMO

wsgi_server.py

def application(env, start_response):
    start_response(200 OK, [(Content-Type, text/html)])
    return hello world

应用:

使用uwsgi部署以上应用:

uwsgi --http 0.0.0.0:9090 -p 4 -l 100 -M -R 100000  -z30 -L --wsgi-file  wsgi_server.py --max-apps 65535 --stats 127.0.0.1:1717 --post-buffering 100M --cpu-affinity --buffer-size 65535 --daemonize /tmp/uwsgi --pidfile /tmp/uwsgi.pid  --memory-report --threads 4

然后浏览器访问: http://localhost:9090/ 即可。

 

优势:

提高并发访问支持(-p 进程数, --threads  线程数)

提高服务运行稳定性(--daemonize)

 

安装

pip install uwsgi
pip install uwsgitop

uwsgi--uwsgi服务器

uwsgitop--uwsgi服务器性能查看工具,用法:

配合以上例子

uwsgitop 127.0.0.1:1717

 

参数详细说明

官方文档:http://uwsgi-docs.readthedocs.io/en/latest/Options.html

挑几个重点:

--wsgi-file , 指定wsgi入口文件

 

-p  , workers个数,也是进程数, 按照惯例可默认设为核数,但是不是最有需要通过 uwsgitop来查看(个人觉得uwsgitop没啥用)。

--threads , 线程数, 每个进程的线程数,进程的任务用线程的模式完成。由于用c编写,因此不用担心GIL的问题, 但linux上不存在线程,线程本质来讲是伪进程(且存在上下文切换成本),因此不建议使用。

(用了后,再用uwsgitop监控时,可通过键盘的“A”键查看线程的资源占用情况)

--listen , 内核监听(listen)网络队列的长度,受文件操作系统最大的网络连接数(net.core.somaxconn) 的限制, 长度越大意味着在高并发的环境下,丢失请求越少。

--cpu-affinity, cpu友好,即进程在运行时不切换核(切换以为者时间成本)

 

--stats,  监控程序的url,只有设置了这个参数以后才能用 uwsgitop 1717来观看监控

--memory-report, 开启内存占用报告(uwsgitop中可以看到) 

--master, 启动主进程,方便管理所有进程, 可以配合 pidfie 使用。方便停止(uwsgi --stop /tmp/uwsgi.pid)/重启uwsgi ( uwsgi --reload /tmp/uwsgi.pid)

 

--daemonize, 增加守护进程,使web服务更加稳定。参数为日志文件的路径。

 

其他略,可以自己逐一尝试。

 

用途

flask必需搭配使用咯。

django建议使用,默认支持,有默认的wsgi.py文件生成。

 

uwsgi 使用随笔

标签:

原文地址:http://www.cnblogs.com/Tommy-Yu/p/5647730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!