2012-11-02 34 views
3

我剛將Sphinx服務器從1.10-beta更新到2.0.6-release,現在我遇到了searchd的一些問題。以前我們可以通過指定兩個不同的配置,文件,即運行的彼此相鄰searchd兩個實例:運行searchd的兩個實例的問題

searchd --config /etc/sphinx/sphinx.conf 
searchd --config /etc/sphinx/sphinx.staging.conf 

的sphinx.conf聽9306:mysql419312,而sphinx.staging.conf聽9307:mysql419313

然而,我們更新到2.0.6後,第二個實例從未啓動。或者說,輸出使它看起來像它開始,並創建一個pid文件等。但由於某種原因,只有第一個searchd實例繼續運行,第二個似乎馬上關閉。因此,在試圖運行searchd --config /etc/sphinx/sphinx.conf兩次(如果這是第一個啓動的)時,抱怨pid文件正在使用,試圖運行searchd --config /etc/sphinx/sphinx.staging.conf(如果這是第二個啓動的實例),則會一次又一次「啓動」守護進程,創建新進程。 請注意,如果在第一次創建進程時切換這些命令,那麼sphinx.conf是未真正啓動的實例。

我已經檢查並重新檢查了這些端口僅被searchd使用。

有沒有人有任何想法我可以做/下次嘗試?我已經從源代碼安裝它在Ubuntu 10.04 LTS:

./configure --prefix /etc/sphinx --with-mysql --enable-id64 --with-libstemmer 
make -j4 install 

回答

5

自我提醒:檢查日誌!

RT-indices使用二進制日誌來啓用崩潰恢復。由於我的舊配置文件未指定存儲路徑,所以searchd的兩個實例都嘗試寫入相同的二進制日誌。始於去年的情況下,當然是不允許操縱這些文件,從而以致命錯誤退出:

[Fri Nov 2 17:13:32.262 2012] [ 5346] FATAL: failed to lock 
    '/etc/sphinx/var/data/binlog.lock': 11 'Resource temporarily unavailable' 
[Fri Nov 2 17:13:32.264 2012] [ 5345] Child process 5346 has been finished, 
    exit code 1. Watchdog finishes also. Good bye! 

解決辦法很簡單,確保指定binlog_path每個配置文件的searchd配置部分中:

searchd 
{ 
[...] 
    binlog_path = /path/to/writable/directory 
[...] 
} 
+0

我沒有使用RT索引只能使用本地索引,但無法運行帶有位於桌面上的不同sphinx.conf文件的searchd,它只能指向默認的sphinx.conf文件。 [這是我的問題](http://stackoverflow.com/questions/31832046/sphinx-search-deamon-not-working-on-different-port) –