Webrick的响应非常慢。如何加快速度?

问题描述 投票:88回答:12

我有一个正在服务器上运行的Rails应用程序。当我进入远程桌面并尝试加载应用程序时,服务器会花费3-4分钟的时间来响应简单的HTML页面。但是,当我在服务器上本地加载页面时,该页面仅会显示一秒钟。我尝试从远程桌面ping服务器,并且在合理的时间内ping操作成功。

这似乎在我安装了Oracle的基本客户端和SQLPLUS之后就开始了。我应该怀疑甲骨文吗?有没有人经历过类似的事情?

ruby-on-rails oracle sqlplus webrick
12个回答
139
投票

在这里(甚至一年后)也有同样的问题。在Linux下,您必须执行以下操作:

查找文件/usr/lib/ruby/1.9.1/webrick/config.rb并进行编辑。

替换行

:DoNotReverseLookup => nil,

with

:DoNotReverseLookup => true,

重新启动webrick,它将像超级按钮一样工作:)


0
投票
这是一个很晚的答案,但我花了很大一部分时间在Vagrant上运行Rails调试此问题。更改反向DNS查找实际上并没有改善请求时间。在开发模式下,两件事的结合使我的页面加载时间从〜20秒增加到〜3秒:

0
投票
在ruby 1.8.x webrick中没有DoNotReverseLookup选项。解决方法是:

0
投票
在我的[[可能

36
投票

有相同的问题。对我而言,this post保留了解决方案。如果您使用的是Ubuntu,请停止(或卸载)avahi-daemonservice avahi-daemon stop停止守护程序。

Webrick现在感觉非常很快。

该问题有一个old report in Rails Lighthouse,但是从那时起,Ruby-on-Rails已经移动了their tickets to github;不幸的是,这个老问题仍然存在。

不过请注意,如果您实际上使用 avahi-daemon来处理网络上的finding printers and scanners之类的东西,将不再起作用。


23
投票

只是有同样的问题。

...
:DoNotReverseLookup => true,
...

也是我的把戏。万一您在rvm下运行ruby,这是要使用的路径:

~/.rvm/rubies/ruby-<version>/lib/ruby/<version>/webrick/config.rb

15
投票

“ Thin”现在是在本地运行[[和Heroku:

的绝佳选择在Heroku上:https://devcenter.heroku.com/articles/rails3#webserver网站:http://code.macournoyer.com/thin/

您可以通过放入Gemfile在本地使用它:

gem "thin"

...,然后运行捆绑软件并使用thin startrails s启动服务器。

在Heroku上更新

Thin现在被认为是Heroku的

bad选择。更多信息在这里:

https://blog.heroku.com/archives/2013/4/3/routing_and_web_performance_on_heroku_a_faq

他们的推荐:

[切换到JRuby上的并发Web后端,例如Unicorn或Puma,这使dyno可以管理自己的请求队列,避免阻塞长请求。

6
投票
我有一个类似的相似问题,当通过VPN访问WEBrick服务器时就会表现出来。请求将花费很长时间,大多数情况下,网络上什么都没有发生。由于mongrelthin宝石都无法在Windows上使用Ruby1.9,并且我无法陷入从源代码进行编译的过程,因此我需要坚持使用WEBrick。

修复是在创建WEBrick服务器时将配置参数DoNotReverseLookup设置为true

server = HTTPServer.new {:DoNotReverseLookup => true, ...}


5
投票
您可以使用Apache或安装Thin。在您的Gemfile中:gem 'thin'

也可以检查web-servers for rails的列表。


2
投票
曾尝试在1.8.7上使用webrick进行此操作,但找不到要更改的配置。但是,您可以使用的一种作弊方式是将正在尝试反向查找的IP地址添加到运行webrick的服务器的主机文件中。

2
投票
我在Sinatra上经常遇到10秒的延迟。此代码段已为我解决。

1
投票
这是一个古老的问答线程,它帮助我解决了本地开发虚拟机上的:DoNotReverseLookup问题,并希望添加其他信息。 Ruby核心中的This web page explains the regression error导致此问题的出现。重点是我的;如果所有这些都比较短,那么会有一个GitHub pull请求来对此进行Ruby核心修复,并希望它会被批准并合并到即将发布的Ruby版本中:
© www.soinside.com 2019 - 2024. All rights reserved.