我有一项CRON工作,每5分钟重建一次Sphinx指数:
*/5 * * * * cd /var/www/my_app && /usr/local/bin/ruby /usr/local/bin/rake RAILS_ENV=production ts:rebuild >> /var/www/my_app/log/cron_log.log
它只为一个约有400条记录的表编制索引,但每次启动rake任务时,CPU负载都会跳到100%(VPS有4个CPU和1 GB RAM)。对此,我似乎找不到任何合理的解释。我该如何调查原因?有什么方法可以优化这个过程吗?
此任务是否大量使用流程,然后按预期停止?它停留的时间比它应该停留的时间长吗?
此外,值得注意的是,只有当索引结构发生变化(新字段或属性),或者添加或删除索引时,才需要重新生成索引-要更新数据,请使用ts:index
任务(这不会不必要地重新启动Sphinx)。