2

我正在开发我的应用程序搜索引擎。该搜索引擎使用 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 问题。我认为增量索引只会导致一些问题。

提前致谢。

4

2 回答 2

2

问题实际上是当它旋转所有索引,即主索引和增量索引时,它会锁定增量索引的资源文件。我将增量索引的轮换与其他负责合并增量索引的 cron 作业一起移动。

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 指数的单独旋转是分辨率。

谢谢

于 2013-01-29T12:52:52.097 回答
0

检查哪些用户运行 searchd 和 indexer 进程。另请查看您对索引文件拥有的权限。您遇到了权限问题。

于 2013-01-28T17:47:23.833 回答