在Heroku上飞行Sphinx错误 - 致命:无法锁定..资源暂时不可用

时间:2015-01-29 22:05:21

标签: ruby-on-rails heroku unicorn thinking-sphinx

我在Heroku(Unicorn服务器)上运行了一个Rails(3.2)应用程序。我也在使用Flying Sphinx进行搜索。

当我尝试索引或重建时,我使用

heroky run bundle exec flying-sphinx configure
heroku run bundle exec flying-sphinx index (or rebuild)

我的一些索引会在此过程中输出以下错误:

FATAL: failed to lock /mnt/local/flying-sphinx/4188b791429cbac91/indexes/user_delta.spl: Resource temporarily unavailable, will not index. Try --rotate option.

enter image description here

即使在尝试配置,重建和/或索引后,我也会收到某些索引的错误。

此外,Heroku上的Flying Sphinx状态页面表明Sphinx没有运行。我不确定这是否相关。以下是状态页面的屏幕截图:

enter image description here

如果我能提供其他任何东西,请告诉我。

修改

我刚刚注意到我的重建输出中出现“设备上没有剩余空间”错误,不确定它是否也相关:

ERROR: index 'search_proxy_core': /mnt/local/flying-sphinx/4188b791429cbac91/indexes/search_proxy_core.tmp.spd: write error: No space left on device.

enter image description here

1 个答案:

答案 0 :(得分:1)

这是几件事的组合:

  • 使用delta指数但没有定期运行完整索引,因此delta指数变得非常,非常大且处理速度很慢。
  • Sphinx的SQL查询使用的每个外键都没有数据库索引。
  • 其中一个索引文件中的数据损坏,导致Sphinx在每次查询时崩溃,并且无法在不重新处理索引的情况下修复。

我们获得了数据库索引,进行了重建,然后一切顺利。