Ubuntu

Gearman 作業伺服器 / Ubuntu

  • January 15, 2012

我已經安裝了 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 或不指定任何內容。

引用自:https://serverfault.com/questions/350016