Pat*_*and 3 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
Run Code Online (Sandbox Code Playgroud)
sphinx.conf监听9306:mysql41
,并且9312
,当sphinx.staging.conf侦听9307:mysql41
和时9313
.
然而,在我们更新到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
Run Code Online (Sandbox Code Playgroud)
自我注意:检查日志!
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!
Run Code Online (Sandbox Code Playgroud)
解决方案很简单,确保binlog_path
在searchd
每个配置文件的配置部分内指定:
searchd
{
[...]
binlog_path = /path/to/writable/directory
[...]
}
Run Code Online (Sandbox Code Playgroud)