我如何确保狮身人面像守护进程运行?
我正在使用CentOS 5.3,Apache和Phusion Passenger(mod_rails
)设置生产服务器。我有一个使用Sphinx搜索引擎和思维狮身人面像宝石的应用程序。我如何确保狮身人面像守护进程运行?
如果你真的想要搜索对 索引数据,那么你需要 狮身人面像的searchd的守护程序正在运行。
rake thinking_sphinx:start rake ts:start rake thinking_sphinx:stop rake ts:stop
什么是保证这个发生在生产的最佳方式: 这可以通过使用 以下任务进行控制?我可以部署我的应用程序,然后手动运行rake thinking_sphinx:start
,但我喜欢设置一些东西,这样如果我不得不弹回服务器,一切都会恢复。
我应该在初始化程序中调用Rake任务吗?或者在rc.local
?
rc.local是一个好的开始,但它还不够。我会配对是一个监控规则,以确保它正在运行,更重要的是...
狮身人面像需要一个完全重建索引,使所有最新的和最大的可用。关于delta indexing的思考狮身人面像网站上有一些doco,但是如果您的索引很小,每小时重新索引将会照顾到事情,而且您不需要delta索引。
我跑这每小时要照顾这:
0 * * * * cd /var/rails/my_site/current/ && RAILS_ENV=production /usr/bin/rake ts:rebuild
注:部署,我会使用内置的思维狮身人面像Capistrano的任务:
在你Capfile添加
require 'thinking_sphinx/deploy/capistrano'
我曾经在cap任务中链接重新索引,但是因为速度非常慢,所以当我进行模式更改时,我会记得运行它或等待小时的cron作业修复它。
我还没有用Spinix做过这个,所以我希望有人能给你更好的答案,但你应该看看monit。 Monit旨在保持守护进程运行,就像你需要做的一样。
一个快速的Google for spinix monit打开了这个链接:Capistrano recipes: sphinx:monit。那将是一个开始的好地方。
对于它的价值,我跑
thinking_sphinx:index
...在我的cron作业,而不是“重建”的任务。这不需要searchd进程处于脱机状态,但索引在完成后仍会进行旋转,因此会收到新的更改。我认为只有当你改变模型中的索引结构时才需要“重建”任务,这对我来说很少发生。
如果用户在重新编制索引时正在执行搜索,是不是会出现错误? – Ethan 2009-11-22 22:33:03
yerp,当重建时它会让搜索死掉,我建议你添加一些重试逻辑来补偿(重试长达20秒,或者显示一个自定义页面,表明搜索将很快可用)。 (可能是pat的一个好主意,将其添加到ts) – 2009-11-22 22:47:21
如果必须重新启动服务器,则还需要一种启动守护进程的方法。 – holaSenor 2013-02-15 13:55:25