草庐IT

ruby-on-rails - 用 USR2 重启 Unicorn - 退出 old master

因此,将USR2发送给Unicorn非常棒——它会使用您的代码的新副本启动一个新的master,并自动获取任何更改。甜的。我的问题是:我如何阻止老主人?显然被接受的方式是在before_fork中:before_forkdo|server,worker|old_pid='/var/www/current/tmp/pids/unicorn.pid.oldbin'ifFile.exists?(old_pid)&&server.pid!=old_pidbeginProcess.kill("QUIT",File.read(old_pid).to_i)rescueErrno::ENOENT,Er

ruby-on-rails - 使用 USR2 重新启动 Unicorn 似乎不会重新加载 production.rb 设置

我正在运行unicorn并试图实现零停机重启。到目前为止一切都是很棒的调味料,主进程fork并启动4个新worker,然后杀死旧worker,大家都很高兴。我们的脚本发送以下命令来重启unicorn:kill-sUSR2`cat/www/app/shared/pids/unicorn.pid`从表面上看一切都很好,但事实证明unicorn并没有重新加载production.rb。(每次部署时,我们都会将config.action_controller.asset_host值更改为一个新的CDN容器端点,其中包含我们预编译的Assets)。以这种方式重新启动unicorn后,Assets

ruby-on-rails - 多进程VS多线程服务器最受益于什么?

谁能解释一下每种并发方式的瓶颈是什么?Unicorn(基于进程)和Puma(基于线程)等服务器。是否每种方法都更喜欢CPU内核?线程?或者只是时钟速度?还是特殊组合?如何确定在使用专用服务器的情况下所需的最佳CPU特性?如何确定Unicorn的最佳worker数量,或Puma的threads数量? 最佳答案 Unicorn是基于进程的,这意味着每个ruby​​实例都必须存在于自己的进程中。每个进程可能在500mb左右,这将很快耗尽系统资源。基于线程的Puma理论上不会使用相同数量的内存来获得相同数量的并发。Unicorn,由于是多个

ruby-on-rails - 如何将 unicorn 用作 "rails s"?

一个新的Rails项目的Gemfile显示:#Useunicornastheappservergem'unicorn'railss--help显示:Usage:railsserver[mongrel,thin,etc][options]然而,做:railssunicorn我得到:/Users/patrick/.rvm/gems/ruby-1.9.3-head@keynote/gems/rack-1.4.5/lib/rack/handler.rb:63:in`require':cannotloadsuchfile--rack/handler/unicorn(LoadError)from/

ruby - 如何使用 nginx proxy_pass 保留请求 url

我正在尝试使用Thin应用服务器,有一个问题。当nginxproxies使用proxy_passhttp://my_app_upstream;对Thin(或Unicorn)的请求应用程序接收nginx发送的修改后的URL(http://my_app_upstream)。我想要的是不加修改地传递原始URL和来自客户端的原始请求,因为应用严重依赖它。nginx'doc说:IfitisnecessarytotransmitURIintheunprocessedformthendirectiveproxy_passshouldbeusedwithoutURIpart.但我不明白如何配置它,因为

javascript - 当我在 Unicorn 服务器上运行时,Websockets 在我的 Rails 应用程序中不起作用,但在瘦服务器上运行

我正在学习RubyonRails以在Heroku上使用WebSockets构建实时网络应用程序,但我无法弄清楚为什么在Unicorn服务器上运行时websocket连接失败。我将我的Rails应用程序配置为在本地和Heroku上使用Procfile在Unicorn上运行...web:bundleexecunicorn-p$PORT-c./config/unicorn.rb...我在本地使用$foremanstart开始。javascript客户端创建websocket连接失败...vardispatcher=newWebSocketRails('0.0.0.0:3000/websock

ruby-on-rails - Resque 未从配置中选择正确的服务器

我正在尝试将我的Reddis服务器移至外部设备。已在github上关注Resque自述文件。在开发模式下,它会很好地加载配置并连接到6379上的本地主机:resque.rb初始化器rails_root=ENV['RAILS_ROOT']||File.dirname(__FILE__)+'/../..'rails_env=ENV['RAILS_ENV']||'development'resque_config=YAML.load_file(rails_root+'/config/resque.yml')Resque.redis=resque_config[rails_env]resque

ruby - unicorn 服务器 mongodb 和 sinatra

所以我一直在努力寻找更多关于这方面的信息。我目前正在使用sinatra+mongodb+unicorn构建轻量级API。由于在unicorn上运行的中间件应用程序中的实例变量仅在每个请求中存活,所以这样的事情是行不通的:@connector||=Mongo::Connector.new'localhost'这意味着对于每个传入的请求,我都会创建一个新的Mongo::Connection实例,在多次请求之后,它会在我的机器上生成一整套mongodb进程。我通过声明一个全局变量解决了这个问题$connector||=Mongo::Connector.new'localhost'但这是要走的

ruby-on-rails - rails 环境 mongoid 连接问题

我有Rails应用程序3.2.17,部署在staging环境中,unicorn4.6.3由bluepill0.0.66使用mongid3.1.5监控当我为暂存环境部署时,所有工作都发现包括active_record,但mongoid查询除外,结果出现以下错误:Errorduringfailsaferesponse:Problem:Noconfigurationcouldbefoundforasessionnamed'default'.Summary:Whenattemptingtocreatethenewsession,Mongoidcouldnotfindasessionconfig

mysql - 将 Rails/Unicorn/Nginx 容器连接到 MySQL 容器

与this相关线程,我正在尝试创建2个容器:1个使用Rails应用程序,另一个使用MySQL数据库,但我不断收到Mysql2::Error(Can'tconnecttolocalMySQLserverthroughsocket'/var/run/mysqld/mysqld.sock'在我点击容器的IPhttp://192.168.59.103后,在我的应用程序production.log文件中当我启动Rails容器时,我试图链接它们,如果我指定了不正确的MySQL名称,就会出现错误。我缺少什么才能成功链接容器以便完整的应用程序在容器中运行?Rails容器命令dockerrun--nam