我有一个在nginx下运行的三个mongrel集群,我使用Capistrano 2.4.3部署应用程序.当我有一个正在运行的系统时"封盖部署",行为是:
在cap deploy输出中,有这样的:
在尝试重新启动集群之前,似乎'mongrel_rails cluster :: restart'没有正确等待完全停止.如何诊断和解决此问题?
编辑:这是答案:
mongrel_cluster,在"重启"任务中,只需执行以下操作:
def run
stop
start
end
Run Code Online (Sandbox Code Playgroud)
在调用"start"之前,它不会等待或检查进程是否已退出.这是一个已知错误,提交了一个未完成的补丁.我将补丁应用于Mongrel Cluster,问题就消失了.
我的Rails应用程序的第一个请求(工作会话)总是滞后.切换到生产模式没有帮助.
我使用mongrel,其他请求以可接受的速度处理.
如何让它更快?
问候
我有一个Ruby on Rails应用程序,它将成为一个CMS,这意味着它主要是数据库密集型的.我希望它具有相当大的流量,所以在设计之前我选择使用哪些服务器.对我来说最重要的是表现.
我听说过关于Nginx的好东西,Rails社区中的许多开发人员都建议我唯一担心的是它的版本是0.8,这是Beta我相信所以我担心潜在的问题.你说什么?
另外,我想决定使用Mongrel集群还是Phusion Passenger.你怎么看?
我打算使用Ruby 1.9,因为它具有更好的性能,Ruby 1.8和我将使用VPS来托管我的网站.
我的主要内容是性能,即使设置一个在另一个上需要更长的时间.
非常感谢您的意见.
谢谢,
谭
我目前正在使用Mongrel开发自定义Web应用程序项目.
我希望Mongrel使用基于正则表达式的定义的Http Handler.例如,每当有人调用http://test/bla1.js或http://test/bla2.js这样的URL时,就会调用相同的Http处理程序来管理请求.
到目前为止我的代码看起来像这样:
http_server = Mongrel::Configurator.new :host => config.get("http_host") do
listener :port => config.get("http_port") do
uri Regexp.escape("/[a-z0-9]+.js"), :handler => BLAH::CustomHandler.new
uri '/ui/public', :handler => Mongrel::DirHandler.new("#{$d}/public/")
uri '/favicon', :handler => Mongrel::Error404Handler.new('')
trap("INT") { stop }
run
end
end
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我试图在这里使用正则表达式而不是字符串:
uri Regexp.escape("/[a-z0-9]+.js"), :handler => BLAH::CustomHandler.new
Run Code Online (Sandbox Code Playgroud)
但这不起作用.有解决方案吗
感谢那.
我通过可从RubyInstaller 1.9.1 RC2安装了Ruby RubyForge的,更新的宝石,并安装导轨.使用webrick,一切都运行良好.为了好玩,我使用"gem install mongrel"安装了mongrel.装置很顺利:
Successfully installed gem_plugin-0.2.3
Successfully installed cgi_multipart_eof_fix-2.5.0
Successfully installed mongrel-1.1.5-x86-mingw32
3 gems installed
Installing ri documentation for gem_plugin-0.2.3...
Installing ri documentation for cgi_multipart_eof_fix-2.5.0...
Installing ri documentation for mongrel-1.1.5-x86-mingw32...
Updating class cache with 1162 classes...
Installing RDoc documentation for gem_plugin-0.2.3...
Installing RDoc documentation for cgi_multipart_eof_fix-2.5.0...
Installing RDoc documentation for mongrel-1.1.5-x86-mingw32...
Run Code Online (Sandbox Code Playgroud)
现在,当我使用"ruby脚本/服务器"启动Web服务器时,我收到错误:
"程序无法启动,因为您的计算机缺少msvcrt-ruby18.dll."
然后,webrick启动并正常运行.
我猜测它是使用Rails 1.9的问题而mongrel期望1.8?(我是铁杆新手,没有真正的理由让我使用杂种......只是戳了一下)
我正在从谷歌进行身份验证并且收到request too long错误所以在一些研究中我添加了mongrel宝石.这修复了request too long我本地计算机上的错误.
但是,现在当我推送到heroku时,我不断得到以下错误
您已经激活了守护程序1.1.0,但您的Gemfile需要守护程序1.0.10.考虑使用bundle exec.(宝石:: LoadError)
的Gemfile:
gem 'pg'
gem 'compass', '>= 0.11.5'
gem 'fancy-buttons'
gem 'haml', '3.1'
gem "nifty-generators", :group=>:development
gem "bcrypt-ruby", :require => "bcrypt"
gem "jquery-rails"
gem "devise"
gem "omniauth"
gem 'oa-openid', :require => 'omniauth/openid'
gem 'mongrel', '1.2.0.pre2'
Run Code Online (Sandbox Code Playgroud)
也许从杂项中取出杂物可能会解决手头的问题,但是当我从谷歌进行身份验证时,我会再次"请求太长时间"错误.
这有解决方法吗?我应该使用不同的版本吗?如果是这样......哪个?
bundle exec即使heroku在部署之前运行它,我也会在本地运行.
我有一个Spring MVC项目,我一直在部署到Tomcat(在本地和服务器上安装).我正在使用Eclipse Indigo作为我的IDE.为了部署,我一直在右键单击并选择"在服务器上运行",这将在localhost上正常运行.为了将WAR部署到实际服务器,我一直在右键单击Project,选择Export,然后通过向导来部署WAR文件.
我的Eclipse/Java很生疏,但我确实记得几年前我使用它时,我使用的是Tomcat的Sysdeo插件,它可以让我从右键单击上下文中选择Deploy to War.所以,我戳了一下,发现了我安装的"Mongrel".有了这个,我根据偏好去了Mongrel,并设置我的Tomcat版本,这样我就可以点击小启动/停止Tomcat图标并启动/停止服务器.这很成功.
我现在无法为我的生活做的是,在Project Properties-> Tomcat中,选择"是一个Tomcat项目".我选中复选框,然后单击应用和/或确定关闭窗口,当我再次打开它时,我的设置不会被记录.我已经尝试检查框并添加其他选项(如上下文名称,WAR文件导出路径,根子目录和激活开发者加载器),但我没做什么"坚持".
有人能告诉我我错过了什么,或者至少指出了我正确的方向?我很难过.
提前致谢.
我的RubyOnRails应用程序使用Apache配置背后的通常一组mongrel进行设置.我们注意到我们的Mongrel Web服务器内存使用量在某些操作上会变得非常大,我们真的希望能够随时动态地重新启动选定的Mongrel进程.
但是,由于我不会进入这里的原因,我们有时非常重要的是我们不会在处理请求时中断Mongrel,因此我假设一个简单的进程终止不是答案.
理想情况下,我想向Mongrel发送一个信号,表示"完成你正在做的任何事情然后在接受任何更多连接之前退出".
是否有标准技术或最佳实践?
将我的Rails安装升级到OS X上的Rails 3之后,我在使用Mongrel运行Rails 2.x开发站点时遇到了问题.WEBrick似乎工作,但我真的希望有很好的Mongrel输出用于调试.
跑完后$ script/server我明白了:
/Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:489:in `load': no such file to load -- mongrel_rails (MissingSourceFile)
from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:489:in `load'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:342:in `new_constants_in'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:489:in `load'
from /Library/Ruby/Gems/1.8/gems/rails-2.0.2/lib/commands/servers/mongrel.rb:64
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:49:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:49:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:496:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:342:in `new_constants_in'
from /Library/Ruby/Gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:496:in `require'
from /Library/Ruby/Gems/1.8/gems/rails-2.0.2/lib/commands/server.rb:39
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:49:in `gem_original_require'
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我尝试过的:
$ sudo gem update system
Run Code Online (Sandbox Code Playgroud)
$ sudo gem update
Run Code Online (Sandbox Code Playgroud)
$ sudo gem uninstall mongrel
Run Code Online (Sandbox Code Playgroud)
$ sudo gem install mongrel --include-dependencies
Run Code Online (Sandbox Code Playgroud)
$ which mongrel_rails
Run Code Online (Sandbox Code Playgroud)
→ /usr/bin/mongrel_rails
$ mongrel_rails start
Run Code Online (Sandbox Code Playgroud)
→成功,但没有标准
$ …Run Code Online (Sandbox Code Playgroud) 在Mongrel中,我们可以看到任何ruby调试代码.安装后瘦了做thin start.我没有在控制台窗口看到任何调试代码.
这是不是很好吗?
我们是否应该tail -f log/development.log在新的控制台窗口中使用来查看调试代码?