相关疑难解决方法(0)

重新启动Upstart实例进程

我正在运行多个工作实例,如本答案中所述:自动启动多个upstart实例

问题:我可以一次重启所有实例吗?

要开始我的工作,我可以做:

initctl启动我的工作者

然后允许我这样做:

initctl status worker N = 1 worker(1)启动/运行,进程551

initctl status worker N = 2 worker(2)start/running,process 552

有没有办法做这样的事情:

initctl重启我的工作者

我希望能够重新启动所有实例,而无需知道有多少实例正在运行.

这是我的my-workers.conf

start on stopped cloud-init
stop on shutdown

env NUM_WORKERS=4

script
  for i in `seq 1 $NUM_WORKERS`
    do
      start worker N=$i
    done
end script
Run Code Online (Sandbox Code Playgroud)

和worker.conf

stop on shutdown

chdir /path/to/current

respawn

instance $N

script
  exec su -c "/home/worker/.rvm/bin/rvm-shell -c 'bundle exec rake work 2>&1 >> /var/log/worker-$N.log'" worker
end script
Run Code Online (Sandbox Code Playgroud)

ubuntu upstart

30
推荐指数
2
解决办法
1万
查看次数

Upstart任务在成功完成后挂起

我有一个Upstart任务,它基于自动启动多个upstart实例Restarting Upstart实例进程来启动多个服务实例.它正在工作,它启动所有实例,但在它成功启动后,它只是挂起.如果我Ctrl-C出去然后用其中任何一个查看实例service status或查看ps它们都已成功启动,那么当它挂起时我不知道它正在做什么.

这是我的脚本:

description "all-my-workers"

start on runlevel [2345]

task

console log

env NUM_INSTANCES=1
env STARTING_PORT=42002

pre-start script
  for i in `seq 1 $NUM_INSTANCES`;
  do
    start my-worker N=$i PORT=$(($STARTING_PORT + $i))
  done
end script
Run Code Online (Sandbox Code Playgroud)

当我这样做时,service start all-my-workers我得到这个:

vagrant@vagrant-service:/etc/init$ sudo service all-my-workers start
Run Code Online (Sandbox Code Playgroud)

然后它只是挂在那里,并没有再提示我.正如我所说,我可以Ctrl-C看到正在运行的工人:

vagrant@vagrant-service:/etc/init$ sudo service all-my-workers status
all-my-workers start/running
vagrant@vagrant-service:/etc/init$ sudo service my-worker status N=1
my-worker (1) start/running, process 21938
Run Code Online (Sandbox Code Playgroud)

并在ps …

linux ubuntu upstart

9
推荐指数
1
解决办法
1108
查看次数

Supervisord为PHP和Gearman添加了多个进程

我最近用PHP5-FPM,Gearman和Supervisor建立了Ubuntu Natty.我编辑了我的Supervisord配置来运行Gearman工作者.

[program:gearman] 
command=/usr/bin/php php_gearman_worker.php
numprocs=1 
directory=/root/sandbox
stdout_logfile=/root/sandbox/supervisord.log 
environment=GEARMAN_USER=gearman 
autostart=true
autorestart=true
user=gearman
Run Code Online (Sandbox Code Playgroud)

这是lsof -i -P我运行supervisord之前的相关信息(仅显示gearmand和php进程):

COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
gearmand  29314  gearman    6u  IPv4 328139      0t0  TCP localhost:4730 (LISTEN)    
Run Code Online (Sandbox Code Playgroud)

而这就是我lsof -i -P追求的时候所得到的/etc/init.d/supervisor stop && /etc/init.d/supervisor start.

COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
gearmand  29314  gearman    6u  IPv4 328139      0t0  TCP localhost:4730 (LISTEN)
gearmand  29314  gearman   11u  IPv4 328206      0t0  TCP localhost:4730->localhost:39072 (ESTABLISHED)
php       29571  gearman    4u …
Run Code Online (Sandbox Code Playgroud)

php gearman supervisord

3
推荐指数
1
解决办法
6394
查看次数

标签 统计

ubuntu ×2

upstart ×2

gearman ×1

linux ×1

php ×1

supervisord ×1