狮身人面像重新启动搜索恶魔问题以重新索引Delta索引

时间:2013-01-26 10:46:38

标签: php mysql cakephp full-text-search sphinx

我正在开发我的应用搜索引擎。这个搜索引擎正在使用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指数只会引起一些问题。

提前致谢。

2 个答案:

答案 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)

检查哪些用户运行搜索和索引器进程。另请参阅您对索引文件的权限。您有权限问题。