当我跑步sudo supervisorctl start stage然后我得到ERROR (abnormal termination).请你看看吗?
这是我的档案/etc/supervisord.conf.我错过了什么吗?谢谢
[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file)
[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process …Run Code Online (Sandbox Code Playgroud) 我试着弄明白我何时使用reload命令来监督.它会停止当前正在执行的处理吗?我用了以下步骤:
mlzboy@mlzboy-mac:~/my/ide/test$ pstree -p|grep super
|-supervisord(6763)
mlzboy@mlzboy-mac:~/my/ide/test$ supervisorctl
daemon STARTING
supervisor> reload
Really restart the remote supervisord process y/N? y
Restarted supervisord
supervisor> exit
mlzboy@mlzboy-mac:~/my/ide/test$ pstree -p|grep super
|-supervisord(6763)
Run Code Online (Sandbox Code Playgroud)
我发现进程ID没有改变.那么它是否证明重载不会停止在主管控制下的处理?
我在Laravel中为我的处理脚本设置了队列.我正在使用beanstalkd和supervisord.有6种不同的管用于不同类型的加工.
问题在于,对于每个管子,工匠每秒都在不断地产生工人.工作者代码似乎睡了1秒然后工作线程使用7-15%cpu,乘以6管......我想每管多个工人......我的cpu被吃掉了.
我尝试将1秒睡眠改为10秒.这有助于但是当工人们醒来时,每10秒仍有一个巨大的CPU峰值.我现在甚至没有处理任何事情,因为队列完全是空的,只是工人正在寻找要做的事情.
当我在浏览器中刷新页面并且徘徊在10%左右时,我还测试了laravel的cpu使用情况.我现在正处于低端机架空间实例,这样可以解释它但仍然......看起来像每当他们醒来时,工人就会开出一个laravel实例.
有没有办法解决这个问题?我是否只需要将更多的钱投入更昂贵的服务器,以便能够听取工作是否准备就绪?
编辑:
找到一个解决方案...它不是使用工匠队列:监听器或队列:工作我查看了队列代码,似乎没有解决这个问题的方法,它需要laravel加载每次工人检查做更多的工作.
相反,我使用pheanstalk编写了自己的监听器.我仍然使用laravel将事物推入队列,然后我的自定义侦听器正在解析队列数据,然后触发一个artisan命令来运行.
现在我的侦听器的cpu使用率在%0以下,我的cpu现在唯一的时间就是当它实际找到工作然后触发命令时,我很好.
我试图进行自动部署,包括supervisord和默认设置路径混淆.
每一个部署方案,我发现使用/etc/supervisor/supervisor.conf并/etc/supervisor/conf.d/没有任何预设置和链接,还通过易于得到这条道路是真的示例配置充满安装监督员包后.
在这个示例中,流程看起来像没有任何链接和创建,如下所示/etc/supervisor.conf:
sudo('apt-get -y install supervisor')
put('config/supervisor_gunicorn.conf', '/etc/supervisor/conf.d/gunicorn.conf', use_sudo=True)
sudo('supervisorctl reload')
Run Code Online (Sandbox Code Playgroud)
但是在supervisorctl此路径中未指定为默认值,并且假定默认位置位于某处/etc/supervisor.conf,如手册中所指定
我试图以所有可能的方式安装主管,但我无法得到结果.
我知道这只是一个小小的愚蠢细节,但我将非常感谢您协助我的部署方案保持良好状态.
我需要使用supervisord创建的进程的进程ID,以便在脚本中使用.由supervisord生成的进程不会在其默认目录中创建.pid文件(如果有的话).
如何获取supervisord子进程的进程ID?
当我停止Supervisord时,如何确保子流程停止?
我正在使用Supervisord来管理两名芹菜工人.每个工作人员的命令是:
command=/usr/local/myapp/src/manage.py celery worker --concurrency=1 --loglevel=INFO
Run Code Online (Sandbox Code Playgroud)
当我开始监督时,它们运行得很好,但是当我跑步时sudo service supervisord stop,它报告我的工人停止:
celery_1: stopped
celery_2: stopped
Run Code Online (Sandbox Code Playgroud)
但是,当我跑步时,ps aux | grep celery我看到它们仍在运行:
www-data 27667 0.0 1.5 318420 64360 ? S 10:45 0:00 manage.py celery worker --concurrency=1 --loglevel=INFO
www-data 27668 0.0 1.5 318420 318416 ? S 10:45 0:00 manage.py celery worker --concurrency=1 --loglevel=INFO
Run Code Online (Sandbox Code Playgroud) 我在Supervisord的程序部分使用环境变量,它们工作得很好:
[program:some_prog]
command=%(ENV_env_var_name)s/...
Run Code Online (Sandbox Code Playgroud)
我不知道如何在[supervisord]部分做同样的事情.我尝试使用相同的语法有和没有ENV_前缀,但得到以下错误:
Traceback (most recent call last):
File "/usr/local/bin/supervisord", line 9, in <module>
load_entry_point('supervisor==3.0a12', 'console_scripts', 'supervisord')()
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/supervisord.py", line 356, in main
options.realize(args, doc=__doc__)
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/options.py", line 419, in realize
Options.realize(self, *arg, **kw)
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/options.py", line 284, in realize
self.process_config_file()
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/options.py", line 478, in process_config_file
Options.process_config_file(self, do_usage=do_usage)
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/options.py", line 292, in process_config_file
self.read_config(self.configfile)
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/options.py", line 527, in read_config
section.directory = existing_directory(directory)
File "/usr/local/lib/python2.7/dist-packages/supervisor-3.0a12-py2.7.egg/supervisor/datatypes.py", line 336, in existing_directory
nv = v % {'here':here}
KeyError: 'var_name'
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这一目标?
这是我的配置flie.I运行supervisord -c /etc/supervisor/supervisord.conf它很好.当我尝试运行时supervisorctl -c /etc/supervisor/supervisord.conf,错误发生了:
错误:,serverurl /var/run/supervisord.sock的未知协议:file:/usr/local/lib/python2.7/dist-packages/supervisor-3.0b2-py2.7.egg/supervisor/xmlrpc.py line :440
我可以http://127.0.0.1:9001完美地启动或停止我的程序,但我想在命令行中控制程序.任何人都可以帮助我吗?
[unix_http_server]
file = /var/run/supervisor.sock
chmod = 0777
chown= root:cruelcage
[inet_http_server]
port=9001
username = cruelcage
password = 123
[supervisorctl]
serverurl = /var/run/supervisord.sock
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisord]
logfile=/home/cruelcage/log/supervisord/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=true ; …Run Code Online (Sandbox Code Playgroud) 设置a Dockerfile以安装节点先决条件,然后设置超级用户以运行最终npm install命令.在VirtualBox下运行CoreOS中的Docker.
我有一个Dockerfile正确设置一切:
FROM ubuntu
MAINTAINER <<Me>>
# Install docker basics
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN apt-get update
RUN apt-get upgrade -y
# Install dependencies and nodejs
RUN apt-get update
RUN apt-get install -y python-software-properties python g++ make
RUN add-apt-repository ppa:chris-lea/node.js
RUN apt-get update
RUN apt-get install -y nodejs
# Install git
RUN apt-get install -y git
# Install supervisor
RUN apt-get install -y supervisor
RUN mkdir -p /var/log/supervisor …Run Code Online (Sandbox Code Playgroud) 我的celerybeat.conf
[program:celerybeat]
command=/path/app/env/bin/celery beat -A project.tasks --loglevel=INFO
environment=PYTHONPATH=/path/app/env/bin
user=nobody
numprocs=1
stdout_logfile=/var/log/celeryd.log
stderr_logfile=/var/log/celeryd.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600
killasgroup=true
priority=998
Run Code Online (Sandbox Code Playgroud)
当我启动主管时,我收到一个错误:
pidfile_fd = os.open(self.path, PIDFILE_FLAGS, PIDFILE_MODE)
celery.platforms.LockFailed: [Errno 13] Permission denied: '/celerybeat.pid'
Run Code Online (Sandbox Code Playgroud)
不知道怎么解决这个问题?
supervisord ×10
python ×4
bash ×1
beanstalkd ×1
celery ×1
celerybeat ×1
deployment ×1
docker ×1
laravel ×1
laravel-4 ×1
node.js ×1
pid ×1
reload ×1
unix ×1