2016-04-14 42 views
5

我終於設法使用此tutorial來重新啓動服務器,並且該部分工作得很好。我設置了它,以便運行10名工人。問題是當我檢查第二天時,其中一些工人已經停止並且沒有重新啓動。服務器也沒有重啓。監督人員停止加班並且不重新啓動(與laravel一起使用)

這是我的程序是如何設置在supervisord.conf文件:

[program:laravel-worker] 
process_name=%(program_name)s_%(process_num)02d 
command= php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
directory=/home/magic/_app/_laravel 
numprocs=10 
redirect_stderr=true 
autostart=true 
autorestart=true 
startsecs=0 
startretries=10 
exitcodes=0,2 
stopsignal=TERM 
stopwaitsecs=10 
stdout_logfile=/home/magic/_app/_laravel/storage/logs/supervisor/supervisor.log 
stdout_logfile_maxbytes=50MB 
stdout_logfile_backups=10 
stdout_capture_maxbytes=0 
stdout_events_enabled=false 
user=magic 
environment=PATH="/usr/local/bin" 

我第一次使用service supervisord start啓動該服務,然後如果我做service supervisord status,它下面顯示出來的過程。我不完全理解它們,但它看起來是正確的,因爲我的工匠指令有10個實例。

|-17991 /usr/bin/python /usr//bin/supervisord --pidfile /tmp/supervisord.pid 
|-17992 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-17993 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-17994 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-17995 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-17996 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-17997 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-17998 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-17999 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-18000 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-18001 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-18002 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-18003 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-18004 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-18005 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-18006 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-18007 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-18008 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-18009 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-18010 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
`-18011 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 

但是過了一段時間後,通常第二天我就會看到類似的情況。這次看起來只有6個進程正在運行,所以其中4個進程已經停止。

|- 3984 /usr/bin/python /usr//bin/supervisord --pidfile /tmp/supervisord.pid 
|- 3985 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|- 3986 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|- 3988 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|- 3989 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-12224 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-13610 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-14263 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-16417 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
|-17424 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-17425 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-17427 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-17428 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-17429 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-17430 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
|-17856 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
`-18356 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 

supervisord日誌顯示非常正常的東西。這裏有500個錯誤,我想也許這是一個調查的主角,但他們與失蹤工人的數量和時間戳不匹配。

laravel日誌本身有幾個最大執行時間超過錯誤,實際上它正好有10個是我上次清理日誌的時間。所以我不知道每個工人是否是1。它看起來像這樣。時間戳再次與主管日誌不匹配,因此很難知道這是否會導致它。我可以增加PHP允許的執行時間我只是不知道這是否會導致工人不能重新啓動。

[2016-04-14 02:56:20] production.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Maximum execution time of 30 seconds exceeded' in /home/magic/_app/_laravel/vendor/symfony/process/Symfony/Component/Process/Pipes/UnixPipes.php:130 

如果有人有任何意見或建議,我將不勝感激。真的想解決這個問題。

因此,在修復supervisorctl以正常工作後,現在當我做supervisorctl status時,它顯示所有10名工人正在運行。但問題是他們沒有運行他們應該執行的命令。

這裏是supervisorctl status現在顯示:

laravel-worker:laravel-worker_00 RUNNING pid 11566, uptime 4:38:36 
laravel-worker:laravel-worker_01 RUNNING pid 18358, uptime 2 days, 18:40:16 
laravel-worker:laravel-worker_02 RUNNING pid 8102, uptime 1 day, 20:57:15 
laravel-worker:laravel-worker_03 RUNNING pid 10691, uptime 11:42:54 
laravel-worker:laravel-worker_04 RUNNING pid 32543, uptime 1 day, 22:07:53 
laravel-worker:laravel-worker_05 RUNNING pid 30215, uptime 20:40:02 
laravel-worker:laravel-worker_06 RUNNING pid 32732, uptime 1 day, 22:03:05 
laravel-worker:laravel-worker_07 RUNNING pid 24625, uptime 21:44:41 
laravel-worker:laravel-worker_08 RUNNING pid 19807, uptime 2:36:21 
laravel-worker:laravel-worker_09 RUNNING pid 32332, uptime 1 day, 3:07:34 

這裏就是service supervisord status節目。正如你所看到的,它顯示了10名工人加上3名工人正在執行的任務。但它應該是10個任務來匹配10名工人。因此,它似乎是加班工人停止,即使他們仍然在運行某些原因,在執行任務:

* supervisord.service - SYSV: Supervisor Server 
    Loaded: loaded (/etc/rc.d/init.d/supervisord) 
    Active: active (running) since Thu 2016-04-21 16:44:43 EDT; 2 days ago 
    Docs: man:systemd-sysv-generator(8) 
    CGroup: /system.slice/supervisord.service 
      |- 8102 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
      |-10691 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
      |-11566 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
      |-18356 /usr/bin/python /usr//bin/supervisord --pidfile /tmp/supervisord.pid 
      |-18358 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
      |-19807 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
      |-24625 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
      |-28557 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
      |-28711 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
      |-28712 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production 
      |-30215 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
      |-32332 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
      |-32543 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 
      `-32732 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600 

Apr 21 16:44:43 host systemd[1]: Starting SYSV: Supervisor Server... 
Apr 21 16:44:43 host supervisord[18351]: Starting supervisord: /usr/lib/python2.7/site-packages/supervisor-3.2.3-py2.7.egg/supervisor/option... 
Apr 21 16:44:43 host supervisord[18351]: 'Supervisord is running as root and it is searching ' 
Apr 21 16:44:43 host supervisord[18351]: [17B blob data] 
Apr 21 16:44:43 host systemd[1]: Started SYSV: Supervisor Server. 
+0

'supervisorctl status'的結果是什麼?或'supervisorctl tail '? – fernandezcuesta

+0

@valtuarte我不認爲supervisorctl安裝或運行正常,我不知道supervisord是否需要它。'supervisorctrl status'的狀態返回'unix:///var/run/supervisor.sock no such file'。 'supervisorctl tail '相同錯誤' – zen

+0

@zen嘗試'supervisorctl -c pathToSupervisord.conf狀態' – Wistar

回答

0

我想我可能已經修復了這個問題。這可能是由於supervisord.conf文件中的command屬性使用了錯誤的php引起的。我將它從php更改爲/usr/local/bin/php,並且它已經運行了2天,並且沒有任何任務必須重新啓動或已經停止處理隊列。

如果我看到問題重複出現,我會稍後更新此問題,但現在看起來運行得比以往任何時候都穩定得多。