【问题标题】:Do I really need to restart Sphinx on each deploy?我真的需要在每次部署时重新启动 Sphinx 吗?
【发布时间】:2025-12-14 03:20:17
【问题描述】:

我目前正在为 Rails 使用 SphinxThinkingSphinx gem。

我正在通过 cron 使用带有计划索引的增量索引。问题是,对于每次部署,我都会重新启动 searchd 进程。我每天部署大约 5 次,每次执行时搜索都会下降,这对我来说是不可接受的。真的每次都需要重启狮身人面像吗?当然,有办法实现不停机吗?

顺便说一句,我正在使用 Engineyard 和来自 EY 的这本特别的食谱,Thinking Sphinx 3 Cookbook

它有点旧,上面写着:

您还需要添加一个部署挂钩以在部署时重新启动 Sphinx。

有什么想法吗?是否有更多更新的 Sphinx 食谱?

【问题讨论】:

  • 如果你真的改变了搜索索引或者数据库模式,你会认为你只需要重新启动 sphinx。使用常规的 cronjob,即使确实更改了架构,无论如何都会更新。从阅读该页面来看,它在很大程度上谈论的是“首次部署”,而不是“重新部署”。
  • 是的,这也是我的想象。但是在文档页面(上面链接)上,有一个部分“使用 Capistrano 部署”触发思考狮身人面像停止/重启。

标签: ruby-on-rails ruby-on-rails-4 sphinx thinking-sphinx engineyard


【解决方案1】:

EngineYard 文档确实已经过时了。正如 Barry 在 cmets 中提到的,如果您以某种方式更改了 Sphinx 配置,则只需重新启动 Sphinx。

Thinking Sphinx 文档曾经建议重新启动 - 这也许是 EY 文档提出相同建议的原因 - 但这仅适用于您不为 Sphinx 使用共享路径的情况。特定于部署的路径(以前的方法)意味着 Sphinx 文件对于每个部署都位于不同的位置,因此需要重新启动才能使用最新的发布目录。但是,共享路径意味着 Sphinx 文件始终位于同一个位置,与特定部署无关,因此您无需每次都重新启动。

【讨论】:

    最近更新 更多