思考Sphinx delta索引在生产中失败

时间:2009-10-26 02:19:42

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

这是我确定的:

  1. Delta indexing在开发中运行良好
  2. 当我推送到生产服务器时,Delta索引不起作用,并且searchd.log中没有记录任何操作
  3. 我正在运行Phusion Passenger,并按照the basic troubleshooting guide的建议确认:
    1. www-data有权运行索引rake任务(手动从命令行运行)
    2. indexer和searchd的路径是正确的(/ usr / local / bin)
    3. production.log
    4. 中没有错误
  4. 我到底能错过什么?我正在运行Ruby Enterprise 1.8.6,Rails 2.3.4,Sphinx 0.9.8.1和Thinking Sphinx 1.2.11。

    谢谢!

6 个答案:

答案 0 :(得分:1)

昨晚我睡觉的时候打了我。不出所料,这是一个涉及错误配置的愚蠢问题,尽管我对它产生的结果感到惊讶。我想我不太了解思考Sphinx内部。

最近我迁移了服务器。 sphinx.yml看起来像这样:

production:
  bin_path: '/usr/local/bin'
  host: mysql.mysite.com

在新服务器上,MySQL只是一个本地服务,但我忘记删除该行。有趣的是,手动rake重建索引仍然可以正常工作。我很好奇Think Sphinx在尝试重新加载增量时没有抛出错误,因为mysql.mysite.com不再存在,即使这显然是问题的根源。

感谢您的帮助,很遗憾提出这样一个愚蠢的问题。

答案 1 :(得分:0)

Apache / Nginx的错误日志中是否有任何线索?

答案 2 :(得分:0)

这是我要采取的下一个故障排除步骤。打开您正在使用的delta索引策略的文件(大概是lib/thinking_sphinx/deltas/default_delta.rb)。找到它实际生成索引命令的行。在我的(v1.1.6)中,它是第20行:

output = `#{config.bin_path}indexer --config #{config.config_file} #{rotate} #{delta_index_name model}`

更改它以便您可以记录命令本身,也可以记录输出:

command = `#{config.bin_path}indexer --config #{config.config_file} #{rotate} #{delta_index_name model}`
RAILS_DEFAULT_LOGGER.info(command)
output = `#{command}`
RAILS_DEFAULT_LOGGER.info(output)

将其部署到生产环境并在修改delta-indexed模型时拖尾日志。希望这实际上会告诉你这个问题。当然,问题可能在代码的其他地方,你甚至都不会达到这一点,但这是我要开始的地方。

答案 3 :(得分:0)

我遇到了这个问题并找到了上面提到的“bin_path”解决方案。当它似乎不起作用时,我花了一段时间才意识到,当我在“停滞”的环境中进行测试时,我已经粘贴了“生产”的示例代码。问题解决了!

这是在确保配置,索引和启动sphinx的rake任务全部作为乘客实例的同一用户运行之后。如果您以root身份登录服务器以运行这些任务,它们将在控制台中工作,但不能通过乘客工作。

答案 4 :(得分:0)

我遇到了同样的问题。在命令行上运行,而不是在应用程序中运行。

事实证明我们仍然有一个我们用于索引的奴隶数据库,但奴隶没有得到更新。

答案 5 :(得分:0)

如上所述,两台机器也面临同样的问题。第一个我们遇到了mysql的问题,在apache2日志中显示。似乎只影响本地OSX机器..

当我们第二次部署到Ubuntu服务器时,我们遇到了同样的问题。 Rails c生产很好,没有错误,bla bla bla。

结束了权限问题。无法解决这个问题,因为开始没有问题,但我想我是以root身份这样做的。

使用capistrano和乘客,我们这样做了:

  1. 创建一名乘客用户并添加到www-data group
  2. 将deploy.rb中的用户更改为乘客
  3. 手动更改上述所有/当前文件
  4. 以乘客用户身份登录。
  5. Ran rake ts:rebuild RAILS_ENV =“production”
  6. 为我们工作......

    祝你好运