Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 韦布里克反应很慢。如何加速?_Ruby On Rails_Oracle_Sqlplus_Webrick - Fatal编程技术网

Ruby on rails 韦布里克反应很慢。如何加速?

Ruby on rails 韦布里克反应很慢。如何加速?,ruby-on-rails,oracle,sqlplus,webrick,Ruby On Rails,Oracle,Sqlplus,Webrick,我有一个在服务器上运行的Rails应用程序。当我转到远程桌面并尝试加载应用程序时,服务器需要3-4分钟来响应一个简单的HTML页面。但是,当我在服务器上本地加载页面时,页面会在一秒钟内显示出来。我尝试从远程桌面ping服务器,ping在合理的时间内成功完成 这一切似乎都是在我安装了Oracle的基本客户端和SQLPLUS之后开始的。我应该怀疑甲骨文吗?有人经历过类似的事情吗?我有一个类似的问题,在通过VPN访问WEBrick服务器时表现出来。请求将花费很长时间,大部分请求都不会在网络上发生任何事

我有一个在服务器上运行的Rails应用程序。当我转到远程桌面并尝试加载应用程序时,服务器需要3-4分钟来响应一个简单的HTML页面。但是,当我在服务器上本地加载页面时,页面会在一秒钟内显示出来。我尝试从远程桌面ping服务器,ping在合理的时间内成功完成


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

我有一个类似的问题,在通过VPN访问WEBrick服务器时表现出来。请求将花费很长时间,大部分请求都不会在网络上发生任何事情。 既然
mongrel
thin
gems都不能在Windows上使用Ruby1.9,而且我也不可能从源代码处编译东西,所以我需要坚持使用WEBrick

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

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

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

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

更换线路

:DoNotReverseLookup => nil,


重新启动webrick,它会像一个魔咒一样工作:)

也有同样的问题。

...
:DoNotReverseLookup => true,
...
我也玩了这个把戏。 为了防止您在rvm下运行ruby,以下是您要选择的路径:

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

也有同样的问题。对我来说,持有解决方案。如果您在Ubuntu上,请停止(或卸载)avahi守护进程<代码>服务avahi守护程序停止
停止守护程序

韦布里克现在感觉速度很快

然而,问题有一个原因,RubyonRails从那时起已经移动了;不幸的是,这个老问题仍然存在


但是请注意,如果您实际使用
avahi守护进程
进行某些操作,例如在您的网络上,则该操作将不再有效。

尝试在1.8.7上使用webrick进行此操作,但找不到要更改的配置。但是,您可以使用的一个欺骗是将其试图反向查找的ip地址添加到运行webrick的服务器的主机文件中。

“精简”现在是本地和Heroku上运行的一个很好的选项:

关于Heroku: https://devcenter.heroku.com/articles/rails3#webserver 网站:

您可以在本地使用它,方法是将以下文件放入:

gem "thin"
。。。然后运行bundle并使用
thin start
rails s
启动服务器

关于Heroku的更新

瘦现在被认为是Heroku的坏选择。更多信息请点击此处:

他们的建议:

切换到并发web后端,如JRuby上的Unicorn或Puma,这允许dyno管理自己的请求队列并避免阻塞长请求


您可以使用
Apache
或安装
Thin
。在您的gem文件中:
gem'thin'

您还可以查看列表。

在我可能很少遇到的情况下,它在我刷新iptables后工作,没有任何副作用,因为我没有任何自定义规则(只有默认的Ubuntu allow all):


我和Sinatra经常经历10秒的延迟。这个片段帮我解决了这个问题

将其添加到
app.rb
文件顶部附近

class Rack::Handler::WEBrick
    class << self
        alias_method :run_original, :run
    end
    def self.run(app, options={})
        options[:DoNotReverseLookup] = true
        run_original(app, options)
    end
end
class Rack::Handler::WEBrick

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

用mongrel替换WEBrick。我必须使用预发布版本,否则无法安装:

sudo gem install mongrel --pre
然后将其添加到我的Gemfile for dev:

group :test, :development do
  gem 'mongrel'
end
我的服务器是这样启动的:

rails server mongrel -e development
这缩短了几秒钟,5秒或6秒,但仍然非常缓慢这是蛋糕上的糖霜-也将其添加到GEM文件中:

group :development do
  gem 'rails-dev-boost', :git => 'git://github.com/thedarkone/rails-dev-boost.git'
end

ruby 1.8.x webrick中没有
DoNotReverseLookup
选项。解决办法是:

Socket.do_not_reverse_lookup = true
在你剧本开头的某个地方


来源:

这是一个古老的问答线程,它帮助我解决了本地开发虚拟机上的
:Donothereverselookup
问题,并希望添加其他信息。在Ruby内核中,导致这个问题出现的原因有一些;重点是我的;所有这一切的长与短是有一个GitHub pull请求对此进行Ruby core修复,希望它能在不久的Ruby发行版中得到批准和合并:

经过几个小时的故障排除,结果证明它是! 显然,Ruby的标准库从 1.8.6到2.0.0,WEBrick获得了一个新的配置选项
:DoNotReverseLookup
,默认设置为
nil
。然后,深陷 WEBrick的请求处理代码的核心是
do\u not\u reverse\u查找
传入连接套接字实例上的标志 设置为
config[:DoNotReverseLookup]
的值由于此值为
nil
, 这是falsy,其效果与将其设置为
false
相同, 覆盖全局
套接字。不反向查找
标志。所以,除非 您在WEBrick配置中有:
DoNotReverseLookup=>true
,反向 DNS查找将始终针对每个新连接进行,可能是 造成严重延迟。

与此发现相关的是,建议如何修复Ruby WEBrick源代码中的问题:

请求中概述的解决方案是将
lib/webrick/server.rb
中的第181行更改为:

sock.do_not_reverse_lookup = config[:DoNotReverseLookup]
为此:

unless config[:DoNotReverseLookup].nil?
在这里分享如果有人在这个问题上绊倒了我们
sock.do_not_reverse_lookup = config[:DoNotReverseLookup]
unless config[:DoNotReverseLookup].nil?