【问题标题】:Freeze on thinking sphinx stop(ts:stop) in capistrano冻结在 capistrano 中思考 sphinx stop(ts:stop)
【发布时间】:2013-06-29 14:45:59
【问题描述】:

当我尝试通过 capistrano 部署我的应用程序时,在 ts:stop 命令上出现无限冻结,因此部署过程无法顺利完成。有什么想法吗?

这是一个跟踪日志:

** Invoke ts:stop (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute ts:stop

【问题讨论】:

  • 登陆服务器直接运行命令是否有效?
  • 是的,我是通过服务器上的 ssh 完成的
  • 通过 ssh 和 capistrano 运行命令的用户是同一用户吗?您使用的是什么版本的 Thinking Sphinx?
  • 是的,同一个用户。 TS 版本是 git 的最后一个版本。
  • 恐怕我不知道为什么会这样。也许你可以通过 cap 运行任务,然后通过 SSH 进入,看看是否有任何线索表明它挂起的原因(守护进程是否仍在运行?rake 任务是否仍在运行?)。您可以尝试杀死相应的进程,看看是否通过 cap 返回了堆栈跟踪?

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


【解决方案1】:

在我看来,问题来自我认为找不到的 pid_file。该文件必须在 Capistrano 版本控制之外。

正如documentation 中所述,您的thinking_sphinx.yml 中应该有类似的内容:

production:
  mysql41: 9312
  enable_star: true
  min_prefix_len: 3
  utf8: true
  pid_file: /my_project/sphinx/production.searchd.pid
  indices_location: /my_project/pinchix/shared/sphinx

如果你不这样做,因为 Capistrano 正在创建版本控制文件夹,Thinking Sphinx 将无法在部署文件夹中找到 pid(默认情况下它正在搜索当前文件夹),然后会阻止,因为它不能如果另一个已经启动(端口不是空闲的),则启动一个新的。

【讨论】:

  • 这个答案是正确的。此外,Riddle 的下一个版本将修复无限停止(如果你想通过 git 引用使用它,它位于开发分支中)。
【解决方案2】:

确保您正在启动 sphinx 并在部署具有相同 ruby​​ 版本的挂钩之后运行。在我的情况下,版本不同,设置 rvm default 并在 deploy.rb 中指定 ruby​​ 版本和正确的 gemset 解决了这个问题。

【讨论】:

    猜你喜欢
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多