【问题标题】:Thinking Sphinx delta indexing fails in production认为 Sphinx delta 索引在生产中失败
【发布时间】:2009-10-26 02:19:41
【问题描述】:

这是我确定的:

  1. Delta 索引在开发中运行良好
  2. 当我推送到生产服务器时,增量索引不起作用,并且 searchd.log 中没有记录任何操作
  3. 我正在运行 Phusion Passenger,并且按照 the basic troubleshooting guide 中的建议,我已确认:
    1. www-data 有权运行索引 rake 任务(从命令行手动运行)
    2. indexer 和 searchd 的路径正确 (/usr/local/bin)
    3. production.log 中没有错误

我到底会错过什么?我正在运行 Ruby Enterprise 1.8.6、Rails 2.3.4、Sphinx 0.9.8.1 和 Thinking Sphinx 1.2.11。

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    感谢您的帮助,很抱歉提出了这样一个愚蠢的问题。

    【讨论】:

      【解决方案2】:

      Apache/Nginx 的错误日志有什么线索吗?

      【讨论】:

      • 注意到我的一个助手中有一个弃用警告,但似乎没有任何迹象表明索引失败。
      • 在生产服务器上通过脚本/控制台编辑记录怎么样?这行得通吗?
      【解决方案3】:

      这是我将采取的下一个故障排除步骤。打开您正在使用的增量索引策略的文件(大概是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)
      

      在修改增量索引模型时将其部署到生产环境并跟踪日志。希望这实际上会向您展示问题。当然,问题可能出在代码的其他地方,你甚至不会到达这一点,但这是我要开始的地方。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          原来我们还有一个用于索引的从属数据库,但从属数据库没有得到更新。

          【讨论】:

            【解决方案6】:

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

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

            最终成为权限问题。无法弄清楚这一点,因为启动没有问题,尽管我想我是以 root 身份这样做的。

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

            1. 创建一个乘客用户并添加到 www-data 组
            2. 将 deploy.rb 中的用户更改为乘客
            3. 手动将所有 /current 文件更改为上述所有文件
            4. 以乘客用户身份登录。
            5. Ran rake ts:rebuild RAILS_ENV="production"

            为我们做了一个款待...

            祝你好运

            【讨论】:

              猜你喜欢
              • 2011-03-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-03-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多