日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

supervisord进程管理

發布時間:2025/3/17 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 supervisord进程管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Supervisord

Supervisord是一款基于Python的進程管理工具,當主機上存在多個的進程需要管理時,通過supervisor可以簡化進程的管理。 再通過supervisor提供的rpc接口,可以實現多機多進程管理。

管理進程配置


配置示例:

[program:storm-nimbus] command=/opt/cluster/storm/bin/storm?nimbus user= autostart=true autorestart=true startsecs=15 startretries=999 log_stdout=true log_stderr=true logfile=/data/cluster/logs/storm/nimbus.out logfile_maxbytes=20MB logfile_backups=10


多機多進程管理

Github上的supervisord-monitor項目為多機多進程管理提供了 很好的思路。


******************************************************************************************

1.安裝(以下方式任選一種)

-?easy_install?supervisor-?pip?install?supervisor-?yum?install?supervisor-?apt-get?install?supervisor-?下載源碼包使用:?python?setup.py?install?來安裝

2.配置

  • 生成基礎配置文件

    echo_supervisord_conf?>?/usr/local/supervisor/supervisord.conf
  • 配置supervisor

    • 更改include區段

      [include]
      files = /usr/local/supervisor/conf/*.conf # 啟動進程配置文件所在位置

    • 如果需要web控制界面

      [inet_http_server]
      port=0.0.0.0:9001
      username=username ; 你的用戶名
      password=password ; 你的密碼

  • 啟動進程配置說明

    ?;?管理單個進程的配置,可創建多個,下面是所有可能的配置選項;[program:theprogramname];command=/bin/cat??????????????;?啟動進程的命令?使用相對路徑,可以加參數;process_name=%(program_name)s?;?進程名稱?表達式?(默認?%(program_name)s);numprocs=1????????????????????;?進程數目?(def?1);directory=/tmp????????????????;?執行命令所在的目錄?(def?no?cwd);umask=022?????????????????????;?進程默認權限?(default?None);priority=999??????????????????;?進程啟動相對優先權?(default?999);autostart=true????????????????;?跟隨supervisor啟動時啟動?(default:?true);autorestart=unexpected????????;?計劃啟動?(default:?unexpected);startsecs=1???????????????????;?延時啟動?(def.?1);startretries=3????????????????;?最多連續啟動失敗?(default?3);exitcodes=0,2?????????????????;?進程結束代碼?(default?0,2);stopsignal=QUIT???????????????;?signal?used?to?kill?process?(default?TERM);stopwaitsecs=10???????????????;?最長結束等待時間,否則使用?SIGKILL?(default?10);stopasgroup=false?????????????;?是否想UNIX進程組發送結束信號?(default?false);killasgroup=false?????????????;?SIGKILL?UNIX?進程組?(def?false);user=chrism???????????????????;?設置啟動此程序的用戶;redirect_stderr=true??????????;?重定向程序的標準錯誤到標準輸出?(default?false);stdout_logfile=/a/path????????;?標準輸出的日志路徑,?NONE?for?none;?default?AUTO;stdout_logfile_maxbytes=1MB???;?日志文件最大值,否則循環寫入?(default?50MB);stdout_logfile_backups=10?????;?標準輸出日志備份數目?(default?10);stdout_capture_maxbytes=1MB???;?number?of?bytes?in?'capturemode'?(default?0);stdout_events_enabled=false???;?emit?events?on?stdout?writes?(default?false);stderr_logfile=/a/path????????;?標準錯誤輸出日志路徑,?NONE?for?none;?default?AUTO;stderr_logfile_maxbytes=1MB???;?日志文件最大值,否則循環寫入?(default?50MB);stderr_logfile_backups=10?????;?標準錯誤日志備份數目?(default?10);stderr_capture_maxbytes=1MB???;?number?of?bytes?in?'capturemode'?(default?0);stderr_events_enabled=false???;?emit?events?on?stderr?writes?(default?false);environment=A="1",B="2"???????;?進程附加環境?(def?no?adds);serverurl=AUTO????????????????;?override?serverurl?computation?(childutils)

3.進程管理

Supervisord安裝完成后有兩個可用的命令行supervisord和supervisorctl,命令使用如下:

supervisord:?啟動Supervisord,?一般在etc/init.d/下面會有對應的服務命令,?用它啟動即可
  • 指定配置文件啟動:

    supervisord?-c?/usr/local/supervisor/supervisor.conf

supervisorctl 管理終端:

  • 直接運行supervisorctl打開supervisor控制終端, 輸入help可以查看支持的命令,基本命令如下:

    default?commands?(type?help?<topic>):=====================================add????clear??fg????????open??quit????remove??restart???start???stop??update avail??exit???maintail??pid???reload??reread??shutdown??status??tail??version
  • 或者可以在bash直接執行supervisor控制命令, 基本命令如下:

    supervisorctl?status:?查看當前運行的進程列表supervisorctl?stop?xxx:?停止某一個進程(xxx),xxx為[program:theprogramname]里配置的值。supervisorctl?start?xxx:?啟動某個進程supervisorctl?restart?xxx:?重啟某個進程supervisorctl?stop?groupworker:?重啟所有屬于名為groupworker這個分組的進程(start,restart同理)supervisorctl?stop?all,停止全部進程,注:start、restart、stop都不會載入最新的配置文件。supervisorctl?reload,載入最新的配置文件,停止原有進程并按新的配置啟動、管理所有進程。supervisorctl?update,根據最新的配置文件,啟動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啟。注意:顯示用stop停止掉的進程,用reload或者update都不會自動重啟。

4.其他說明

  • supervisord要求管理的程序是非daemon程序,supervisord會幫你把它轉成daemon程序,因此如果用supervisord來管理nginx的話,必須在nginx的配置文件里添加一行設置daemon off讓nginx以非daemon方式啟動。

  • 同理, 使用supervisor管理redis的啟動時, 也必須設置: daemonize no

5.配置范例

????[program:test-demo]command=python?/data/python/test/test.pyautostart=trueautorestart=truestartsecs=10user=helloredirect_stderr=truestdout_logfile=/data/log/test.logstdout_logfile_maxbytes=10MBstdout_logfile_backups=10stopasgroup=truekillasgroup=trueenvironment=PYTHONPATH='/data/python/test'

6.問題備注

  • 一個可能的問題:

    *?Starting?Supervisor?daemon?manager......Error:?Another?program?is?already?listening?on?a?port?that?one?of?our?HTTP?servers?is?configured?to?use.??Shut?this?program?down?first?before?starting?supervisord.For?help,?use?/usr/bin/supervisord?-h......fail!
    • 解決:

      解決辦法:unlink supervisor.sock文件的位置

6.參考資料

  • http://supervisord.org/

  • http://jwch.sdut.edu.cn/book/server/supervisor.html

  • http://blog.jiunile.com/linux%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86supervisord.html


轉載于:https://blog.51cto.com/5404542/1760864

總結

以上是生活随笔為你收集整理的supervisord进程管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。