supervisor配置文件叫
supervisord.conf
筝尾,supervisord和supervisorctl共用一個(gè)配置文件捡需,如果應(yīng)用啟動(dòng)時(shí),沒有使用-c
選項(xiàng)筹淫,應(yīng)用會(huì)按照指定順序?qū)ふ?code>supervisord.conf文件:
$CWD/supervisord.conf
$CWD/etc/supervisord.conf
/etc/supervisord.conf
/etc/supervisor/supervisord.conf (since Supervisor 3.3.0)
../etc/supervisord.conf (Relative to the executable)
../supervisord.conf (Relative to the executable)
一站辉、配置文件格式
Windows-INI-style (Python ConfigParser)類型文件,包含以[header]
標(biāo)記開頭的模塊和這個(gè)模塊里一系列的key/value鍵值對(duì)
二损姜、環(huán)境變量配置
supervisord啟動(dòng)時(shí)使用的環(huán)境變量饰剥,用的是python%(ENV_X)s
字符串表達(dá)式語法格式
→ [unix_http_server]
[unix_http_server]
模塊下配置了需要監(jiān)聽UNIX domain socket的http服務(wù)的配置參數(shù);如果在conf文件里沒有配置這個(gè)模塊摧阅,那需要監(jiān)聽UNIX domain socket的supervisorctl就不會(huì)被啟動(dòng)
-
values說明:
??1. file
: supervisor為HTTP/XML-RPC請(qǐng)求監(jiān)聽UNIX domain socket的路徑(socket文件路徑)汰蓉;supervisorctl
通過這個(gè)文件完成與supervisor的交流;這個(gè)選項(xiàng)可以用%(here)s
棒卷,如果用%(here)s
這個(gè)值顾孽,那么會(huì)直接擴(kuò)展到supervisord的配置文件所在目錄
?? 這個(gè)關(guān)鍵字默認(rèn)不配置祝钢,也不是必須要配置的,但是要注意若厚,如果supervisor.sock
文件被刪除或者沒有配置太颤,supervisorctl就不能連接到supervisord,也就不能用suepervisorctl控制進(jìn)程了盹沈,例如下面這個(gè)錯(cuò)誤:
報(bào)錯(cuò):Unlinking stale socket /var/run/supervisor/supervisor.sock
解決:unlink /var/run/supervisor/supervisor.sock,然后重啟supervisor
??2. chmod
: socket文件權(quán)限的指定吃谣,默認(rèn)是0700
??3. chown
: 改變socket文件的用戶和組乞封,默認(rèn)使用啟動(dòng)supervisord的用戶和用戶組
??4. username
: supervisorctl連接supervisord時(shí)的授權(quán)用戶,默認(rèn)無指定用戶
??5. password
: supervisorctl連接supervisord時(shí)的授權(quán)密碼岗憋,默認(rèn)無密碼肃晚;密碼既可以是純文本密碼,也可以是帶有{SHA}
前綴的SHA-1的哈希仔戈,例如:{SHA}82ab876d1387bfafe46cc1c8a2ef074eae50cb1d
-
舉個(gè)栗子:
[unix_http_server]
file = /tmp/supervisor.sock
chmod = 0777
chown= nobody:nogroup
username = user
password = 123
→ [inet_http_server]
[unix_http_server]
這個(gè)模塊配置是監(jiān)聽TCP socket的配置关串,如果.conf里面沒有配置這個(gè)模塊,inet的http服務(wù)就不會(huì)啟動(dòng)监徘,那web server和remote supervisorctl就不能使用晋修;
這個(gè)模塊默認(rèn)未開啟狀態(tài),如果需要啟用這個(gè)模塊需要絕對(duì)信任的環(huán)境——應(yīng)該綁定localhost或者只能通過一個(gè)可信賴的獨(dú)立網(wǎng)絡(luò)訪問凰盔,inet的http服務(wù)不支持任何形式的加密墓卦,不能使用默認(rèn)認(rèn)證方式;
inet的http服務(wù)可以被supervisorctl遠(yuǎn)程控制户敬,也可以通過web界面的方式控制子進(jìn)程落剪,查看log,但是不可以把inet的http服務(wù)暴露在公共網(wǎng)絡(luò)里面
-
values說明:
??1. port
: 一個(gè)tcp的host:port配置尿庐,例如127.0.0.1:9001
忠怖,supervisorctl會(huì)通過這個(gè)端口和supervisord交流;無默認(rèn)配置
??2. username
和password
: 與[unix_http_server]
模塊下的username && password
作用相同
-
舉個(gè)例子:
[inet_http_server]
port = 127.0.0.1:9001
username = user
password = 123
→ [supervisord]
這個(gè)模塊配置了supervisord進(jìn)程有關(guān)的全局配置抄瑟,這個(gè)默認(rèn)可以不配置凡泣,但是不配置時(shí),supervisord運(yùn)行可能會(huì)出現(xiàn)問題
-
values:
??1. logfile
:默認(rèn)值:$CWD/supervisord.log
锐借,指定supervisord進(jìn)程的log文件的路徑问麸,也可以直接用%(here)s
;如果指定了log文件&&需要做log滾動(dòng)(根據(jù)log大小限制生成新的log文件)的話钞翔,必須配置logfile_maxbytes > 0
??2. logfile_maxbytes
: 默認(rèn)50MB严卖,配置日志滾動(dòng)的log字節(jié)數(shù)限制,KB/MB/GB
這些單位都是可以用的布轿,如果配置為0哮笆,則認(rèn)為log文件不限制大小来颤,不做log滾動(dòng)
??4. logfile_backups
: 備份保留log個(gè)數(shù),默認(rèn)保留最近10個(gè)稠肘,如果設(shè)置為0就不做任何備份
??5. loglevel
: log級(jí)別:默認(rèn)記錄info級(jí)別的日志福铅,可選:critical||error||warn||info||debug||trace||blather
;如果指定日志記錄為debug級(jí)別项阴,supervisord 的log文件里會(huì)記錄子進(jìn)程的輸入輸出滑黔,也會(huì)記錄進(jìn)程狀態(tài)改變的信息,在某個(gè)進(jìn)程啟動(dòng)異常做調(diào)試的時(shí)候比較方便
??6. pidfile
: supervisord的pid文件路徑环揽,默認(rèn)$CWD/supervisord.pid
略荡,也可以使用%(here)s
??7. umask
: supervisord進(jìn)程的文件權(quán)限掩碼,默認(rèn) 022
??8. nodaemon
: 設(shè)置這個(gè)選項(xiàng)為true
的時(shí)候歉胶,會(huì)在前臺(tái)啟動(dòng)supervisor汛兜,默認(rèn)flase
??8. minfds
: supervisor啟動(dòng)前要求的最小空閑文件描述符數(shù)值,supervisord啟動(dòng)時(shí)對(duì)硬件和軟件資源的要求通今,低于這個(gè)最低值粥谬,supervisor無法啟動(dòng);如果supervisord基于root用戶啟動(dòng)辫塌,硬件限制會(huì)有所提高漏策,所以指定要求的資源限制最低值,可以確保程序運(yùn)行過程中不會(huì)造成資源耗盡的情況璃氢,默認(rèn)值是1024
??9. minprocs
: supervisord啟動(dòng)時(shí)哟玷,系統(tǒng)中最小可用進(jìn)程數(shù)的配置,低于當(dāng)前數(shù)值一也,supervisord不會(huì)啟動(dòng)巢寡;默認(rèn)值=200
??10. nocleanup
: 默認(rèn)false,如果想避免supervisord啟動(dòng)時(shí)“auto”路徑下的清理子進(jìn)程的log文件可以設(shè)置為true
??11. childlogdir
: 子進(jìn)程的“auto” log文件目錄椰苟,默認(rèn)取的是python的tempfile.get_tempdir()
路徑抑月,也可以用%(here)s
??12. user
: 在做進(jìn)程管理之前,supervisord需要轉(zhuǎn)變用戶使用指定的unix用戶(默認(rèn)是當(dāng)前用戶)舆蝴,支持這個(gè)配置的前提是supervisord使用root用戶啟動(dòng)
??PS:3.3.4版本以后谦絮,如果supervisord不能轉(zhuǎn)換到指定用戶,會(huì)記錄錯(cuò)誤信息到log里然后立即退出洁仗;之前的版本會(huì)記critical
log层皱,但是程序可以繼續(xù)運(yùn)行
??13. directory
: supervisord作為守護(hù)進(jìn)程的時(shí)候,會(huì)轉(zhuǎn)換路徑到這個(gè)dictionary赠潦,默認(rèn)不配置叫胖,可以使用%(here)s
??14. strip_ansi
: 清除子進(jìn)程log文件中的ANSI內(nèi)容,默認(rèn)不清除
??15. environment
: supervisord進(jìn)程啟動(dòng)環(huán)境中的環(huán)境變量配置她奥,是KEY="val",KEY2="val2"
這樣一系列的key-value鍵值對(duì)瓮增,如果鍵值對(duì)的value值包含一些非標(biāo)準(zhǔn)字符怎棱,例如KEY="val:123",KEY2="val,456"
這種一定要用""括起來,最好的話還是使用轉(zhuǎn)義減少問題
??16. identifier
: RPC交互使用的supervisor進(jìn)程的聲明绷跑,默認(rèn)值=supervisor
-
舉例:
[supervisord]
logfile = /tmp/supervisord.log
logfile_maxbytes = 50MB
logfile_backups=10
loglevel = info
pidfile = /tmp/supervisord.pid
nodaemon = false
minfds = 1024
minprocs = 200
umask = 022
user = chrism
identifier = supervisor
directory = /tmp
nocleanup = true
childlogdir = /tmp
strip_ansi = false
environment = KEY1="value1",KEY2="value2"
→ [supervisorctl]
使用supervisorctl和supervisord交互的配置
-
values:
??1. serverurl
: 訪問supervisord服務(wù)的url:unix:///absolute/path/to/file.sock
拳恋;默認(rèn)配置http://localhost:9001
??2. username
和password
: 訪問supervisord服務(wù)時(shí)的身份認(rèn)證用戶和密碼,username
需要和supervisord的用戶是同一個(gè)砸捏,默認(rèn)是不配置的谬运;需要注意的是,如果使用password
垦藏,就必須設(shè)置密碼為純文本字符串吩谦,這里不支持SHA hash格式的密碼
??3. prompt
: supervisorctl 命令行標(biāo)識(shí)符,默認(rèn)supervisor
??4. history_file
: 歷史文件的路徑膝藕,如果啟用這個(gè)配置指定文件路徑,那么supervisorctl的歷史命令會(huì)被保存在這個(gè)文件里面咐扭,并且可以命令查看之前supervisorctl session的歷史記錄芭挽,默認(rèn)不配置
-
栗子:
[supervisorctl]
serverurl = unix:///tmp/supervisor.sock
username = chris
password = 123
prompt = mysupervisor
→ [program:x]
這個(gè)模塊在配置文件中至少要有1個(gè),是必須要有的模塊蝗肪,可以有多個(gè)袜爪,這個(gè)模塊告訴supervisord 需要控制的服務(wù)項(xiàng)目有哪些;模塊的頭部是program:接項(xiàng)目名
組成的薛闪,后面的名字就是supervisord控制的服務(wù)名辛馆,后面supervisorctl就是直接通過這個(gè)服務(wù)名稱來做進(jìn)程管理;
如果一個(gè)program沒有指定名字豁延,或者不是用:
指定的昙篙,supervisod啟動(dòng)時(shí)會(huì)直接失敗诱咏;
新版本(3.0)中苔可,一個(gè)[program:x]
將會(huì)被supervisor看做是一個(gè)同類進(jìn)程組,這一系列進(jìn)程組通過numprocs
和process_name
定義在配置文件中袋狞,當(dāng)然默認(rèn)情況下還是一個(gè)program就只是一個(gè)單獨(dú)的進(jìn)程焚辅,以便更好的兼容歷史版本;
-
例如:
testMul這個(gè)program就是一個(gè)進(jìn)程組苟鸯,包含了相同命令啟動(dòng)的三個(gè)進(jìn)程:testMul_00同蜻、testMul_01、testMul_02
[program:testMul]
command=/bin/cat ; the program (relative uses PATH, can take args)
numprocs=3 ; number of processes copies to start (def 1)
process_name=%(program_name)s_%(process_num)02d
-
values:
?? 1.command
: 啟動(dòng)program的命令早处,可以是/usr/bin/python
湾蔓,也可以是python
,但是如果準(zhǔn)備直接用python
這種相對(duì)命令陕赃,需要保證supervisord的環(huán)境變量能夠找到命令路徑并且有權(quán)限執(zhí)行命令卵蛉;
command
的值可以是一個(gè)python字符串類型的表達(dá)式颁股。例如:/path/to/programname --port=80%(process_num)02d
在運(yùn)行時(shí)就可能被擴(kuò)展成/path/to/programname --port=8000
,所有這些表達(dá)式都是可以包含group_name, host_node_name, process_num, program_name, here
這些key的傻丝,而且supervisord的環(huán)境變量前綴必須以ENV_
開頭甘有;
?? 所有program自己本身不應(yīng)該是一個(gè)守護(hù)進(jìn)程,因?yàn)樗麄儠?huì)被作為supervisord的子進(jìn)程葡缰;
?? 還有就是命令行里不要使用單引號(hào)亏掀,如果有需要要使用雙引號(hào),否則可能解析錯(cuò)誤泛释;
?? command是必須填的
??2.process_name
: 組成進(jìn)程名的表達(dá)式滤愕,默認(rèn)%(program_name)s
,可以自行修改
?? 3.numprocs
: 如果numprocs>1怜校,supervisor啟動(dòng)當(dāng)前program時(shí)會(huì)實(shí)例化好幾個(gè)子進(jìn)程间影,默認(rèn)情況取1
?? 4.numprocs_start
: 一個(gè)program啟動(dòng)時(shí)開始的增量偏移量(進(jìn)程編號(hào)初始值),默認(rèn)=0
?? 5.priority
: program啟動(dòng)和停止的優(yōu)先級(jí)順序茄茁,尤其是在start all||stop all
這種操作的時(shí)候魂贬,優(yōu)先級(jí)越低的program,將會(huì)先啟動(dòng)后關(guān)閉裙顽,相反優(yōu)先級(jí)越高的program會(huì)后啟動(dòng)先關(guān)閉付燥,默認(rèn)值是999
?? 6.autostart
: 是否在supervisord啟動(dòng)的時(shí)候自動(dòng)啟動(dòng)進(jìn)程,默認(rèn)是true
?? 7.startsecs
: 項(xiàng)目啟動(dòng)后認(rèn)為項(xiàng)目啟動(dòng)成功愈犹,變更進(jìn)程啟動(dòng)狀態(tài)從STARTING
到RUNNING
的秒數(shù)键科,默認(rèn)是1s;
?? 如果進(jìn)程終止漩怎,且給出符合預(yù)期的狀態(tài)碼勋颖,則在修改STARTING狀態(tài)之前,根據(jù)exitcodes后處理為進(jìn)程啟動(dòng)失斞浮牙言;
?? 8.startretries
: 失敗重啟次數(shù),超過這個(gè)次數(shù)直接將狀態(tài)置為FATAL怪得,進(jìn)程啟動(dòng)失敗咱枉,默認(rèn)3次
?? 9.autorestart
: 當(dāng)進(jìn)程在running狀態(tài)下exit時(shí),是否自動(dòng)重啟徒恋,允許配置false, unexpected, or true
三個(gè)狀態(tài)蚕断,如果是false,不會(huì)自動(dòng)重啟入挣,如果是unexpected亿乳,則在異常退出時(shí)進(jìn)行自動(dòng)重啟,true則是不考慮狀態(tài)碼,始終自動(dòng)重啟葛假;默認(rèn)unexpected
?? 10.exitcodes
: 退出碼障陶,一般是配合著autorestart使用的,默認(rèn)是0
?? 11.stopsignal
: 終止信號(hào)標(biāo)識(shí)聊训,在stop進(jìn)程時(shí)的終止信號(hào)抱究,可以使用TERM, HUP, INT, QUIT, KILL, USR1, or USR2
,默認(rèn)是TERM
?? 12.stopwaitsecs
: 發(fā)出stop指令以后带斑,等待進(jìn)程結(jié)束信號(hào)的時(shí)間鼓寺,默認(rèn)10s,如果當(dāng)前時(shí)間內(nèi)沒有收到進(jìn)程終止信號(hào)勋磕,直接進(jìn)行kill
?? 13.stopasgroup
: 設(shè)置成true妈候,則表示stop信號(hào)要發(fā)給整個(gè)進(jìn)程組,也意味著killasgroup標(biāo)識(shí)為true挂滓,一般情況下默認(rèn)設(shè)置為false
?? 14.killasgroup
: 設(shè)置為true的時(shí)候苦银,標(biāo)識(shí)需要發(fā)送kill信號(hào)到整個(gè)進(jìn)程組,也包括這個(gè)組里的子進(jìn)程們赶站,使用pythonmultiprocessing
的時(shí)候很方便墓毒,當(dāng)然默認(rèn)為false
?? 15.user
: supervisord啟動(dòng)進(jìn)程時(shí)使用的用戶,同樣的這個(gè)用戶使用的前提是supervisord服務(wù)是root用戶啟動(dòng)的亲怠,否則這個(gè)項(xiàng)目不會(huì)被啟動(dòng)的,默認(rèn)沒有設(shè)置
?? 16.redirect_stderr
: 默認(rèn)值是false柠辞,設(shè)置為true的時(shí)候团秽,進(jìn)程的標(biāo)準(zhǔn)錯(cuò)誤輸出內(nèi)容會(huì)被寫入supervisord的標(biāo)準(zhǔn)輸出stdout文件里;
?? 需要注意的是在[eventlistener:x]
里不要設(shè)置redirect_stderr=true
叭首,因?yàn)閑ventlistener是用stdout
和stdin
和supervisord交流的习勤,如果被設(shè)置重定向了,stderr的內(nèi)容會(huì)和eventlistener協(xié)議進(jìn)行交互的
?? 17.stdout_logfile
: 進(jìn)程標(biāo)準(zhǔn)輸出內(nèi)容寫入文件焙格,如果沒有設(shè)置stdout_logfile
或者使用默認(rèn)值AUTO
图毕,supervisor會(huì)自動(dòng)選擇一個(gè)本地文件,如果設(shè)置為NONE
眷唉,就不創(chuàng)建log文件了予颤;
?? 同樣,stdout_logfile
的值可以用python的表達(dá)式
?? 19.stdout_logfile_maxbytes
: stdout_logfile文件做log滾動(dòng)時(shí)冬阳,單個(gè)stdout_logfile文件的最大字節(jié)數(shù)蛤虐,默認(rèn)50M,設(shè)置為0則認(rèn)為不做log滾動(dòng)方式
?? 20.stdout_logfile_backups
: stdout_logfile備份文件個(gè)數(shù)肝陪,默認(rèn)為10
?? 21.stdout_capture_maxbytes
: 當(dāng)進(jìn)程處于stdout capture mode
模式的時(shí)候驳庭,寫入capture FIFO的最大字節(jié)數(shù)限制,默認(rèn)為0,此時(shí)認(rèn)為stdout capture mode
模式關(guān)閉饲常;
?? 22. **stdout_events_enabled
**: 默認(rèn)值為0蹲堂,如果設(shè)置為true,在進(jìn)程寫入標(biāo)準(zhǔn)文件是會(huì)發(fā)起PROCESS_LOG_STDOUT 時(shí)間
?? 23.stdout_syslog
: 默認(rèn)false贝淤,設(shè)置為true的時(shí)候柒竞,標(biāo)準(zhǔn)輸出會(huì)被指向進(jìn)程名的系統(tǒng)log
?? 24.stderr_logfile
: 默認(rèn)AUTO,redirect_stderr!=true的時(shí)候霹娄,stderr的輸出文件
?? 25.stderr_logfile_maxbytes
: 默認(rèn)50MB能犯,stderr_logfile的最大值
?? 26.stderr_logfile_backups
: stderr_logfile的最大備份數(shù)
?? 27.stderr_capture_maxbytes
: 進(jìn)程在stderr capture mode
模式下,寫入 capture FIFO的最大字節(jié)數(shù)限制犬耻,默認(rèn)為0踩晶,即stderr capture mode
模式關(guān)閉;
?? 28.stderr_events_enabled
: 默認(rèn)false枕磁,進(jìn)程寫入stderr文件是發(fā)出的PROCESS_LOG_STDERR事件
?? 29.stderr_syslog
: 默認(rèn)false渡蜻,設(shè)置為true的時(shí)候,標(biāo)準(zhǔn)錯(cuò)誤輸出會(huì)被指向進(jìn)程名的系統(tǒng)log
?? 30.environment
计济、directory
茸苇、umask
: 和前面模塊的意義是類似的
?? 31.serverurl
: 這個(gè)URL是子進(jìn)程作為SUPERVISOR_SERVER_URL
通過環(huán)境與內(nèi)部http服務(wù)做交流的一個(gè)媒介的,如果配置這個(gè)關(guān)鍵字沦寂,和[supervisorctl]
里的作用是相同的 -
栗子:
[program:cat]
command=/bin/cat
process_name=%(program_name)s
numprocs=1
directory=/tmp
umask=022
priority=999
autostart=true
autorestart=unexpected
startsecs=10
startretries=3
exitcodes=0
stopsignal=TERM
stopwaitsecs=10
stopasgroup=false
killasgroup=false
user=chrism
redirect_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stdout_events_enabled=false
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
stderr_events_enabled=false
environment=A="1",B="2"
serverurl=AUTO
→ [include]
以[include]
開頭的一個(gè)模塊学密,這模塊一旦配置,必須包含files
這個(gè)配置传藏,指定額外的配置文件要包含在當(dāng)前配置中腻暮;
這個(gè)模塊只有supervisord用,supervisorctl不會(huì)用到
-
values:
?? 1. files
: 一個(gè)隔離開來的文件系列毯侦,每個(gè)系列里的文件可以是獨(dú)立的哭靖,也可以實(shí)現(xiàn)相互關(guān)聯(lián)的,直接包含就可以了侈离;這個(gè)所謂的一個(gè)系列试幽,需要根據(jù)unix的使用規(guī)則指定一定的模式,然后用*||?||[]
這種匹配模式去匹配卦碾,包含host_node_name||here
的字符喜歡表達(dá)式也是可以的铺坞;
?? 沒有默認(rèn)值,啟用模塊必須配置
-
栗子:
[include]
files = /an/absolute/filename.conf /an/absolute/*.conf foo.conf config??.conf
→ [group:x]
這個(gè)模塊通常是做組進(jìn)程管理的洲胖,將多個(gè)[program:x]放到一個(gè)進(jìn)程中管理康震,為了把一組program作為一個(gè)整體進(jìn)行管理,就要在配置[group:x]的時(shí)候宾濒,必須填好programs的配置項(xiàng)腿短,指定你要綁定在一起的programs們;
模塊命名與program一樣的,header錯(cuò)誤會(huì)導(dǎo)致啟動(dòng)失敗
一個(gè)group模塊下可以配置多個(gè)programs橘忱;
-
values:
?? 1. programs
: 成組的programs
?? 2. priority
: 優(yōu)先級(jí)
-
栗子:
[group:testgroup]
programs=theprogramname,test ; each refers to 'x' in [program:x] definitions
priority=999 ; the relative start priority (default 999)
→ [fcgi-program:x]
- supervisor可以管理所有監(jiān)聽相同 socket的FastCGI進(jìn)程組赴魁,為了實(shí)現(xiàn)完整的進(jìn)程管理, Apache下可以用mod_fastcgi 來管理钝诚,但是Apache的這個(gè)模式的處理會(huì)比較復(fù)雜颖御,這種方式對(duì)CPU和內(nèi)存也有一定的要求;
- 而且為了用例如nginx這種不內(nèi)嵌進(jìn)程管理器的服務(wù)凝颇,還需要借助cgi-fcgi or spawn-fcgi腳本潘拱;
- 這些都可以被結(jié)合使用在supervisor或者其他進(jìn)程守護(hù)工具的進(jìn)程管理中,但是這就要求每個(gè)FastCGI的子進(jìn)程都要綁定自己的socket拧略,這樣做的缺點(diǎn)是:不能過于復(fù)雜的web服務(wù)配置芦岂,重啟和減少的容錯(cuò)性并不好;由于配置需要的sockets 更少垫蛆,如果FastCGI進(jìn)程組可以共享sockets 禽最,那么web服務(wù)器配置就會(huì)更小。共享sockets允許優(yōu)雅的重新啟動(dòng)袱饭,因?yàn)樵谥匦聠?dòng)任何子進(jìn)程時(shí)川无,仍然是父進(jìn)程綁定了這些sockets,容錯(cuò)性也會(huì)更好虑乖;
- supervisor可以實(shí)現(xiàn)使用一組不必要綁定web服務(wù)的FastCGI進(jìn)程共享sockets來完成完整的進(jìn)程組管理懦趋,完成了web服務(wù)和進(jìn)程管理的獨(dú)立化
→ [eventlistener:x]
supervisor允許在配置文件里指定進(jìn)程組(“事件監(jiān)聽池”)的,這些進(jìn)程可能需要接受或者回應(yīng)supervisor事件系統(tǒng)的事件提醒疹味,eventlistener做的就是訂閱這些事件做監(jiān)聽
-
values:
?? 1. 支持 [program:x]
下除了stdout_capture_maxbytes的所有可選配置項(xiàng)
?? 2. buffer_size
: 事件監(jiān)聽池里時(shí)間序列的緩存大小仅叫,當(dāng)一個(gè)事件監(jiān)聽池發(fā)生溢出時(shí),就會(huì)丟棄緩存中最舊的事件
?? 3. events
: 逗號(hào)分隔的事件類型列表佛猛,只出需要監(jiān)聽的進(jìn)程的的哪些事件
?? 4. result_handler
: 一個(gè)python回調(diào)函數(shù)pkg_resources模塊的入口,默認(rèn)supervisor.dispatchers:default_handler
-
栗子:
[eventlistener:theeventlistenername]
command=/bin/eventlistener
process_name=%(program_name)s_%(process_num)02d
numprocs=5
events=PROCESS_STATE
buffer_size=10
directory=/tmp
umask=022
priority=-1
autostart=true
autorestart=unexpected
startsecs=1
startretries=3
exitcodes=0
stopsignal=QUIT
stopwaitsecs=10
stopasgroup=false
killasgroup=false
user=chrism
redirect_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_events_enabled=false
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_events_enabled=false
environment=A="1",B="2"
serverurl=AUTO
→ [rpcinterface:x]
只用于擴(kuò)展supervisor額外的用戶定制行為