django-uwsgi基本配置

一、我的配置:

[uwsgi]
env=LANG=en_US.UTF-8
env=LANGUAGE=en_US.UTF-8
pythonpath=/opt/mcu/nms_webserver/nms_server_python3/lib/python3.5/site-packages
http=[::]:8081
http-timeout=3600
chdir=/opt/mcu/nms_webserver/nms_server
processes=8
threads=1
master=true
pidfile=/opt/data/nms_webserver/nms_webserver.pid
daemonize=/opt/log/nms_webserver/access.log
max-requests=100000
module=nms_server.wsgi
post-buffering=131072
post-buffering-busize=65536
buffer-size=32768
vacuum=true
listen=1024
static-map=/nms=/opt/mcu/nms_webserver/nms_server/nms-web/dist

http=[::]:8081这是ipv6监听端口写法
二、详细解释:

[uwsgi]
env=LANG=en_US.UTF-8  #设置环境编码
env=LANGUAGE=en_US.UTF-8  #设置环境编码
pythonpath=/opt/mcu/nms_webserver/nms_server_python3/lib/python3.5/site-packages #环境安装的python库依赖位置
socket = 127.0.0.1:8000 #套接字方式的 IP地址:端口号(使用nginx时)
http= 127.0.0.1:8000 #Http通信方式的 IP地址:端口号(直接使用uwsgi)
http-timeout=3600 #连接时间
chdir=/opt/mcu/nms_webserver/nms_server #项目当前工作目录
processes=8 #进程个数
threads=1 #每个进程的线程个数
master=true #开启主进程管理模式
pidfile=/opt/data/nms_webserver/nms_webserver.pid #保存主进程的pid 在项目目录下
daemonize=/opt/log/nms_webserver/access.log #设置后台运行 进程守护 信息写入日志 在项目目录下
max-requests=100000 #为每个工作进程设置请求数的上限。当一个工作进程处理的请求数达到这个值,那么该工作进程就会被回收重用(重启)。你可以使用这个选项来默默地对抗内存泄漏
module=nms_server.wsgi #加载一个WSGI模块
post-buffering=131072 #开启缓冲-开启http请求体的缓存。uWSGI将所有大于限定大小的HTTP请求体保存到磁盘中。
post-buffering-busize=65536 #为post的缓存设置内部的缓冲区大小。(这个分配的内存是用来读取socket流的字节块)
buffer-size=32768 #设置用于uwsgi包解析的内部缓存区大小为32k。默认是4k
vacuum=true #自动移除unix Socket 和 Pid 文件 当服务停止的时候
listen=1024 #设置socket的监听队列大小(默认:100)
static-map=/nms=/opt/mcu/nms_webserver/nms_server/nms-web/dist #设置静态文件

注意:使用时注释全部去掉不然无法运行 socket 或http 选一个就行了
三、缺少其中某些配置常见错误:
1.max-requests:系统用了两天系统挂了,发现进程全部自动关闭了
max-requests为每个工作进程设置请求数的上限。当一个工作进程处理的请求数达到这个值,那么该工作进程就会被回收重用(重启)。你可以使用这个选项来默默地对抗内存泄漏。另外还要看你的机器性能等能否支持这么大的请求量。
2.post-bufferingpost-buffering-busize:post请求返回数据超时
我们先看解释:
(1)post-buffering:开启http请求体的缓存。uWSGI将所有大于限定大小的HTTP请求体保存到磁盘中

post-buffering=131072

上述配置会使uWSGI将所有大于128K的HTTP请求体都缓存到磁盘中。Rack应用程序需要这个选项,因为Rack应用程序需要一个可回退的输入流。
(2)post-buffering-bufsize:为post的缓存设置内部的缓冲区大小。(这个分配的内存是用来读取socket流的字节块)

post-buffering-busize=65536

上述配置会使uWSGI分配一个64k的socket的recv()函数的缓存区。对一个128k的请求体来说,需要使用2个这样的缓存区。
3.listen:uWSGI listen queue 队列溢出的问题
设置socket的监听队列大小(默认:100),每一个socket都有一个相关联的队列,请求会被放入其中等待进程来处理。当这个队列慢的时候,新来的请求就会被拒绝,队列大小的最大值依赖于系统内核。
参考链接:uWSGI参考资料(1.0版本的配置选项列表)
uwsgi参数详解

你可能感兴趣的:(Django,uwsgi参数详解)