我正在开发我的应用搜索引擎。这个搜索引擎正在使用sphinx进行全文搜索。
我创建了一个负责更新索引的cron作业。目前它被设置为每天执行一次。
这就是我在这个cron中做的事情。
indexer --all --rotate > sphinx.log
有时整个搜索模块会关闭,并在客户端应用程序中显示此错误。
Notice (1024): Search query failed: connection to 127.0.0.1:9312 failed (errno=111, msg=Connection refused) [APP/models/behaviors/sphinx.php, line 134]
在sphinx.log上我发现了这个错误
FATAL: failed to lock /usr/local/sphinxsearch/delta_users/delta_users.spl: Resource temporarily unavailable, will not index. Try --rotate option.
似乎9312拒绝连接,可能这是因为资源文件被其他进程使用。这是随机行为。
环境部署在Linux(ubuntu)上,应用程序在cakephp上创建。 我正在尝试找出导致它再次停止重新启动sphinx服务的原因。我不知道这是sphinx配置问题还是一些I / O或mysql问题。我认为delta指数只会引起一些问题。
提前致谢。
答案 0 :(得分:2)
问题实际上是当它旋转所有索引,即主索引和delta索引时,它会锁定delta索引的资源文件。我将delta索引的轮换与其他cron作业一起移动,后者负责合并delta索引。
indexer delta_users delta_users_type
indexer --merge users delta_users
indexer --merge users_type delta_users_type
在不同的cron上分别仅旋转主索引
indexer --rotate -- users users_type
而不是
indexer --rotate -- all
因此,Delta和Main索引的单独旋转是分辨率。
由于
答案 1 :(得分:0)
检查哪些用户运行搜索和索引器进程。另请参阅您对索引文件的权限。您有权限问题。