运行两个searchd实例的问题

时间:2012-11-02 15:50:16

标签: sphinx ubuntu-10.04

我刚刚将我们的Sphinx服务器从1.10-beta更新到2.0.6版本,现在我遇到了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

1 个答案:

答案 0 :(得分: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
[...]
}