uwsgi 常用參數
項目目錄
chdir=/var/www/orange_web/
指定項目application
module=orange_web.wsgi:application
指定sock的文件路徑(nginx使用)
socket=/var/www/script/uwsgi.sock
進程個數(processess一樣效果)
workers=2
指定啟動時的pid文件路徑
pidfile=/var/www/script/uwsgi.pid
指定ip及端口(配置nginx就不需要單獨啟動uwsgi需要填寫)
http=172.16.0.4:8001
指定靜態文件(配置nginx不需要,單獨啟動uwsgi加載靜態文件)
static-map=/static=/var/www/orange_web/static
啟動uwsgi的用戶名和用戶組
uid=root
gid=root
啟用主進程
master=true
啟用線程
enable-threads=true
自動移除unix Socket和pid文件當服務停止的時候
vacuum=true
設置日志目錄
daemonize=/var/www/script/uwsgi.log
不記錄信息日志,只記錄錯誤以及uwsgi內部消息
disable-logging=true
序列化接受的內容,如果可能的話
thunder-lock=true
啟動主進程,來管理其他進程,其它的uwsgi進程都是這個master進程的子進程,如果kill這個master進程,相當於重啟所有的uwsgi進程。
master = true
在app加載前切換到當前目錄, 指定運行目錄
chdir = /web/www/mysite
加載一個WSGI模塊,這里加載mysite/wsgi.py這個模塊
module = mysite.wsgi
監控python模塊mtime來觸發重載 (只在開發時使用)
py-autoreload=1
在每個worker而不是master中加載應用
lazy-apps=true
指定socket文件,也可以指定為127.0.0.1:9000,這樣就會監聽到網絡套接字
socket = /test/myapp.sock
啟動2個工作進程,生成指定數目的worker/進程
processes = 2
設置用於uwsgi包解析的內部緩存區大小為64k。默認是4k。
buffer-size = 32768
使進程在后台運行,並將日志打到指定的日志文件或者udp服務器
daemonize = /var/log/myapp_uwsgi.log
設置最大日志文件大小
log-maxsize = 5000000
禁用請求日志記錄
disable-logging = true
當服務器退出的時候自動刪除unix socket文件和pid文件。
vacuum = true
設置socket的監聽隊列大小(默認:100)
listen = 120
指定pid文件
pidfile = /var/run/uwsgi.pid
允許用內嵌的語言啟動線程。這將允許你在app程序中產生一個子線程
enable-threads = true
設置在平滑的重啟(直到接收到的請求處理完才重啟)一個工作子進程中,等待這個工作結束的最長秒數。這個配置會使在平滑地重啟工作子進程中,如果工作進程結束時間超過了8秒就會被強行結束(忽略之前已經接收到的請求而直接結束)
reload-mercy = 8
為每個工作進程設置請求數的上限。當一個工作進程處理的請求數達到這個值,那么該工作進程就會被回收重用(重啟)。你可以使用這個選項來默默地對抗內存泄漏
max-requests = 5000
通過使用POSIX/UNIX的setrlimit()函數來限制每個uWSGI進程的虛擬內存使用數。這個配置會限制uWSGI的進程占用虛擬內存不超過256M。如果虛擬內存已經達到256M,並繼續申請虛擬內存則會使程序報內存錯誤,本次的http請求將返回500錯誤。
limit-as = 256
一個請求花費的時間超過了這個harakiri超時時間,那么這個請求都會被丟棄,並且當前處理這個請求的工作進程會被回收再利用(即重啟)
harakiri = 60