加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – puma start导致“已经有服务器绑定:”错误

发布时间:2020-12-17 02:08:10 所属栏目:百科 来源:网络整理
导读:我无法可靠地重现这个问题,所以我将描述正在发生的事情,并希望你们中的一个聪明的美洲狮孩子可以帮助我. 我总是在部署过程结束时停止并启动美洲狮.我运行pumactl -F config_path停止,工作,然后命令puma -q -d -e staging -C config_path,有时(并非总是)导致
我无法可靠地重现这个问题,所以我将描述正在发生的事情,并希望你们中的一个聪明的美洲狮孩子可以帮助我.

我总是在部署过程结束时停止并启动美洲狮.我运行pumactl -F< config_path>停止,工作,然后命令puma -q -d -e staging -C< config_path>,有时(并非总是)导致以下错误:

[12802] Puma starting in cluster mode... 
[12802] * Version 2.11.3 (ruby 2.1.2-p95),codename: Intrepid Squirrel
[12802] * Min threads: 2,max threads: 4
[12802] * Environment: staging
[12802] * Process workers: 2
[12802] * Phased restart available 
[12802] * Listening on unix:///<app_dir>/tmp/puma/sockets/puma.sock 
<ruby_path>/2.1.0/gems/puma-2.11.3/lib/puma/binder.rb:284:in `add_unix_listener': There is already a server bound to: <app_dir>/tmp/puma/sockets/puma.sock (RuntimeError)
<ruby_path>/2.1.0/gems/puma-2.11.3/lib/puma/binder.rb:124:in `block in parse'
<ruby_path>/2.1.0/gems/puma-2.11.3/lib/puma/binder.rb:82:in `each'
<ruby_path>/2.1.0/gems/puma-2.11.3/lib/puma/binder.rb:82:in `parse'
<ruby_path>/2.1.0/gems/puma-2.11.3/lib/puma/cluster.rb:325:in `run'
<ruby_path>/2.1.0/gems/puma-2.11.3/lib/puma/cli.rb:216:in `run'
<ruby_path>/2.1.0/gems/puma-2.11.3/bin/puma:10:in `<top (required)>'
<ruby_path>/2.1.0/bin/puma:23:in `load'
<ruby_path>/2.1.0/bin/puma:23:in `<main>'

如果我之后尝试再次运行相同的puma start命令,它会起作用.

这是我的puma配置:

#!/usr/bin/env puma

directory "<app_dir>/current"
rackup "<app_dir>/current/config.ru"
environment "staging"

pidfile "<app_dir>/tmp/puma/pid"
state_path "<app_dir>/tmp/puma/state"
activate_control_app "<app_dir>/tmp/puma/sockets/pumactl.sock"

stdout_redirect "<app_dir>/shared/log/puma.error.log","<app_dir>/shared/log/puma.access.log",true

threads 2,4

bind "unix:///<app_dir>/tmp/puma/sockets/puma.sock"

workers 2

我的问题:

>如何重现此错误?
>我该如何解决?这是puma还是我的配置问题?

解决方法

而不是运行两个命令……

pumactl -F <config_path> stop
puma -q -d -e <env> -C <config_path>

只需使用restart命令:

pumactl -F <config_path> restart

说明

美洲狮README有一个关于Restarting的部分,其中没有提到一个接一个地调用停止和启动命令.由于该用例不受支持,使用已建立的方法重新启动Puma服务器很可能会解决此问题.

注意

我无法一致地重现这个美洲狮错误,所以我不能100%确认使用pumactl重启修复了这个问题. (即使Puma缺乏对pumactl stop的支持,其次是puma意味着它确实如此.)如果有人在使用支持的pumactl重启时继续遇到此问题,请告诉我,以便我可以修改此答案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读