Ubuntu
Gearman 作業伺服器 / Ubuntu
我已經安裝了 Gearman,執行和傳遞作業非常好,但只有當我使用以下命令手動啟動作業隊列時:
/usr/sbin/gearmand -p 4730 -vvvv -u gearman
如果我這樣做,我有另一個 EC2 實例作為工作人員執行,第三個傳遞作業。完美,但我不想讓終端保持打開(顯然)或弄亂螢幕。我希望它在啟動時執行。
所以:
$ ps aux | grep gearman gearman 745 0.2 0.2 8096 1388 ? Ss 19:11 0:00 /usr/sbin/gearmand --pid-file=/var/run/gearman/gearmand.pid --user=gearman --daemon --log-file=/var/log/gearman-job-server/gearman.log --listen=127.0.0.1
對我來說看上去很好。但是當我告訴我的工人連接時:
$ php workers/resize.php Waiting for job... PHP Warning: GearmanWorker::work(): gearman_connection_flush:write:111 in /home/ubuntu/workers/resize.php on line 20
失敗!
此外,我注意到日誌文件中沒有任何內容(它不是自動創建的,而是在安裝時在此 init.d 腳本中引用)。我嘗試創建它,甚至對 gearman:gearman 大喊大叫,但那裡沒有樂趣,所以很難調試。
問題是守護程序正在偵聽 127.0.0.1/local loopback 而不是公共 IP。
這是在 Ubuntu 上的 /etc/default/gearman-job-server 中指定的。
將其更改為機器的公共 IP,使用 init 腳本重新啟動守護程序,一切都應該很好。
通常由於 GearmanClient::addServer() 中的參數而發生此錯誤。它不喜歡“localhost”作為參數。嘗試指定 127.0.0.1 或不指定任何內容。