我最近将虚拟机升级到 Redhat 5,并将 Sphinx Search 移至该服务器。出于某种原因,当我尝试启动 Sphinx 时,启动脚本无法将 searchd 进程推送到后台。我创建了一个测试脚本,其中包含启动调用的最小版本,如下所示:
#!/bin/sh
. /etc/rc.d/init.d/functions
daemon /usr/local/sphinx/bin/searchd --config
/home/app/code/server_config/sphinx_config.php
searchd 进程启动,并且我得到的输出表明它正在监听正确的 IP:端口,但是该进程从未返回。
挂起的进程处于守护进程调用中,ps 显示如下:
/bin/bash -c ulimit -S -c 0 >/dev/null 2>&1 ; /usr/local/sphinx/bin/searchd --config
/home/app/code/server_config/sphinx_config.php
您对导致这种情况的原因或如何排除故障有任何想法吗?我们在大约十几台其他运行 Redhat 4 的服务器上使用了相同的进程,这些服务器运行良好(尽管守护进程创建的进程使用 initlog,因此有所不同)。
答案1
事实证明,初始化脚本没有问题,但 sphinx searchd 启动需要很长时间。VM 上分配的内存不足,因此启动大型索引时出现问题。增加内存分配后,现在运行正常。