supervisor配置文件(詳細(xì)說明)

supervisor 安裝啟動(dòng)

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. usernamepassword: 與[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ì)記criticallog层皱,但是程序可以繼續(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. usernamepassword: 訪問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)程組通過numprocsprocess_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
一個(gè)program包含多個(gè)進(jìn)程.jpeg
  • 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)從STARTINGRUNNING的秒數(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)程們赶站,使用python multiprocessing的時(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是用stdoutstdin和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)
groups組示例.jpeg

→ [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額外的用戶定制行為

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坠狡,一起剝皮案震驚了整個(gè)濱河市继找,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逃沿,老刑警劉巖婴渡,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異凯亮,居然都是意外死亡边臼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門假消,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柠并,“玉大人,你說我怎么就攤上這事【视瑁” “怎么了鸣戴?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)粘拾。 經(jīng)常有香客問我窄锅,道長(zhǎng),這世上最難降的妖魔是什么缰雇? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任入偷,我火速辦了婚禮,結(jié)果婚禮上械哟,老公的妹妹穿的比我還像新娘疏之。我一直安慰自己,他們只是感情好戒良,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布体捏。 她就那樣靜靜地躺著,像睡著了一般糯崎。 火紅的嫁衣襯著肌膚如雪几缭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天沃呢,我揣著相機(jī)與錄音年栓,去河邊找鬼。 笑死薄霜,一個(gè)胖子當(dāng)著我的面吹牛某抓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惰瓜,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼否副,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了崎坊?” 一聲冷哼從身側(cè)響起备禀,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奈揍,沒想到半個(gè)月后曲尸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡男翰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年另患,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛾绎。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昆箕,死狀恐怖鸦列,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情为严,我是刑警寧澤敛熬,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站第股,受9級(jí)特大地震影響应民,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜夕吻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一诲锹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涉馅,春花似錦归园、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晤揣,卻和暖如春桥爽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昧识。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工钠四, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人跪楞。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓缀去,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親甸祭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缕碎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345