代码之家  ›  专栏  ›  技术社区  ›  Ethan

如何确保sphinx守护进程运行?

  •  2
  • Ethan  · 技术社区  · 15 年前

    我正在使用CentOS 5.3、Apache和Phusion Passenger建立生产服务器。( mod_rails )我有一个应用程序,使用斯芬克斯搜索引擎和思考的斯芬克斯宝石。

    根据 the Thinking Sphinx docs...

    如果你真的想搜索 索引数据,然后您需要 sphinx搜索的守护进程将运行。 可以使用 以下任务:

    rake thinking_sphinx:start
    rake ts:start
    rake thinking_sphinx:stop
    rake ts:stop
    

    最好的方法是什么,以确保这发生在生产中?我可以部署我的应用程序,然后手动运行 rake thinking_sphinx:start ,但是我喜欢设置,这样如果我必须弹出服务器,所有的东西都会恢复。

    我应该在初始值设定项中调用那个rake任务吗?或某事 rc.local 是吗?

    3 回复  |  直到 14 年前
        1
  •  4
  •   Sam Saffron James Allen    15 年前

    本地是一个好的开始,但还不够。我将与monit规则配对以确保它正在运行,更重要的是…

    狮身人面像需要一个完整的重新索引,使所有最新和最好的可用。斯芬克斯网站上有一些关于 delta indexing 但是如果你的索引很小,每小时重新索引可以解决问题,你不需要增量索引。

    我每小时运行一次来处理这个问题:

    0 * * * * cd /var/rails/my_site/current/ && RAILS_ENV=production /usr/bin/rake ts:rebuild
    

    注意:对于部署,我将使用内置的思考sphinx capistrano任务:

    在你的capfile中添加

    require 'thinking_sphinx/deploy/capistrano'
    

    我曾经在cap任务中链接重新索引,但由于速度太慢而停止了,当我进行模式更改时,我将记住运行它或等待每小时cron作业修复它。

        2
  •  1
  •   Luke Francl    15 年前

    我以前没有用Spinix做过这个,所以我希望有人能给你一个更好的答案,但是你应该看看 monit . monit是为保持守护进程运行而设计的,就像您需要做的一样。

    一个spinix monit的快速谷歌找到了这个链接: Capistrano recipes: sphinx:monit .那将是一个很好的开始。

        3
  •  0
  •   Scott Brown    14 年前

    不管值多少钱,我都在跑步

    thinking_sphinx:index
    

    …在我的cron工作中,而不是“重建”任务。这不要求搜索进程脱机,但索引在完成后仍会旋转,因此会收集新的更改。我认为只有当您在模型中实际更改索引结构时,“重建”任务才是必要的,这对我来说很少发生。