サーバー上で実行しているRailsアプリケーションがあります。リモートデスクトップにアクセスしてアプリケーションを読み込もうとすると、サーバーは3〜4分で応答します。単純なHTMLページですが、サーバーにローカルでページをロードすると、ページがほんの数秒で表示されます。リモートデスクトップからサーバーにpingを実行すると、妥当な時間内にpingが成功します。
これはすべて、Oracleの基本クライアントとSQLPLUSをインストールした後に開始されたようです。 Oracleを疑うべきですか?誰もこれに似た何かを経験しましたか?
ここで同じ問題を抱えています(1年後でも)。 Linuxでは、次のことを行う必要があります。
ファイル/usr/lib/Ruby/1.9.1/webrick/config.rbを探して編集します。
行を置き換える
:DoNotReverseLookup => nil,
と
:DoNotReverseLookup => true,
Webrickを再起動すると、チャームのように機能します:)
同じ問題がありました。私にとっては、 この投稿 が解決策を保持しました。 Ubuntuを使用している場合は、_avahi-daemon
_を停止(またはアンインストール)します。 _service avahi-daemon stop
_はデーモンを停止します。
Webrickはveryのスピードを感じます。
問題には Rails Lighthouse の古いレポートがありますが、Ruby-on-Railsは移動しました 彼らのgithubへのチケット それ以来;残念ながら、この古い問題はまだ続いています。
ただし、実際にuse_avahi-daemon
_を使用する場合は、ネットワーク上で プリンターとスキャナーの検索 、それはもう機能しません。
ちょうど同じ問題がありました。の
...
:DoNotReverseLookup => true,
...
私のためにトリックをしました。 rvmの下でRubyを実行している場合に備えて、次のパスを使用してください。
~/.rvm/rubies/Ruby-<version>/lib/Ruby/<version>/webrick/config.rb
「シン」は、両方をローカルで実行するための素晴らしいオプションです herokuで:
ウェブサイト: http://code.macournoyer.com/thin/
Gemfileに置くことでローカルで使用できます:
gem "thin"
...次にbundleを実行し、thin start
またはRails s
でサーバーを起動します。
Herokuの更新
Thinは、Herokuのbad選択と見なされます。詳細はこちら:
https://blog.heroku.com/archives/2013/4/3/routing_and_web_performance_on_heroku_a_faq
彼らの推薦:
JRubyでUnicornやPumaなどの同時Webバックエンドに切り替えます。これにより、dynoは独自のリクエストキューを管理し、長いリクエストでのブロックを回避できます。
私は、VPN経由でWEBrickサーバーにアクセスするときに明らかになる漠然と似た問題を抱えていました。リクエストには長い時間がかかりますが、そのほとんどは何も行われていません。 mongrel
もthin
gemもWindows上のRuby1.9で動作せず、ソースからのものをコンパイルすることに夢中になる方法がなかったため、WEBrickに固執する必要がありました。
修正は、WEBrickサーバーを作成するときに、構成パラメーターDoNotReverseLookup
をtrue
に設定することでした。
server = HTTPServer.new {:DoNotReverseLookup => true, ...}
Apache
を使用するか、Thin
をインストールできます。 Gemfileで:gem 'thin'
または、 RailsのWebサーバー のリストを確認できます。
1.8.7のwebrickでこれを行おうとしており、変更する設定が見つかりませんでした。ただし、使用できるチートは、webrickを実行しているサーバーのホストファイルに、逆ルックアップしようとしているIPアドレスを追加することです。
これは古い質問と回答のスレッドで、ローカル開発仮想マシンでの:DoNotReverseLookup
問題の解決に役立ち、追加情報を追加したいと考えていました。 このWebページは回帰エラーについて説明しています in Rubyコアがこの問題を一部の人に表示する原因となります。強調は私のものです。これに対するGitHubプルリクエストRubyコア修正。これは、Rubyのまもなくリリースされるリリースで承認およびマージされることを願っています。
トラブルシューティングの数時間後、それがあったことが判明しました!どうやら、Rubyの標準ライブラリの1.8.6から2.0.0への進化のどこかで、WEBrickはデフォルトで
nil
に設定される新しい構成オプション:DoNotReverseLookup
を取得しました。次に、WEBrickのリクエスト処理コードの奥深くで、着信接続ソケットインスタンスのdo_not_reverse_lookup
フラグをconfig[:DoNotReverseLookup]
の値に設定します。 この値は偽のnil
であるため、false
に設定してグローバルSocket.do_not_reverse_lookup
フラグを上書きするのと同じ効果があります。したがって、WEBrick構成に:DoNotReverseLookup => true
が含まれていない限り、新しい接続ごとに常にDNS逆引き参照が行われ、潜在的な深刻な遅延が発生する可能性があります。
この発見に関連するのは 著者からのGitHubプルリクエスト Ruby WEBrickソースコードの問題の修復方法の提案: WEBrickの回帰バグを修正:DoNotReverseLookup構成オプションの実装#731
リクエストで概説されているソリューションは、lib/webrick/server.rb
の181行目を次のように変更することです:
sock.do_not_reverse_lookup = config[:DoNotReverseLookup]
これに:
unless config[:DoNotReverseLookup].nil?
Rubyコア。このプルがマージされるか、基礎となる問題が処理されることを願っています。 Rubyの次のリリースで何らかの形で、おそらく2.1.6ですか?
これは非常に遅い答えですが、この問題をデバッグするためにRails= Vagrantで実行しています。 2つのことの組み合わせにより、開発モードでのページの読み込みが20秒から3秒になりました。
WEBrickをmongrelに置き換えます。プレリリース版を使用しなければ、インストールされませんでした:
Sudo gem install mongrel --pre
次に、devのGemfileに追加します。
group :test, :development do
gem 'mongrel'
end
このようにして私のサーバーを起動しました:
Rails server mongrel -e development
それは数秒、5または6秒をカットしましたが、それでもひどく遅かったです。 これはケーキの上のアイシングでした-これもGemfileに追加します:
group :development do
gem 'Rails-dev-boost', :git => 'git://github.com/thedarkone/Rails-dev-boost.git'
end
私のおそらくまれな状況では、iptablesをフラッシュした後に機能しましたが、カスタムルールがなかったため、副作用はありませんでした(デフォルトのUbuntuですべてが許可されています)。
Sudo iptables -F