Rubyでwebrickの動作が遅い場合の対処

| コメント(0) | トラックバック(1)

ローカルネットワークでWebrickを利用すると 起動に10秒、他のPCからアクセスした場合5秒ぐらい 実行に時間がかかりました。

その際の対処メモ公開

webrickオプション:DoNotReverseLookup => trueをすると 早くなります。この設定は名前解決をしないそうです。

ruby
 require 'webrick'
 opts  = {
   :BindAddress    => IP,
    :Port           => PORT,
    :DocumentRoot   => DOC,
    :CGIInterpreter => CGI_PATH,
    :DoNotReverseLookup => true  #これを入れる
  }

Webrickのソース見たところ

webrick/utils.rb

55行めあたりの、gethostbynameが悪さを起こしている様子

ruby
##
# The server hostname
def getservername
  host = Socket::gethostname
  begin
    Socket::gethostbyname(host)[0]
  rescue
    host
  end
end

Linux系の場合、名前解決系ファイル

/etc/sysconf

    HOSTNAME=cent62.mukaer.com

/etc/hosts

    127.0.0.1     cent62 cent62.mukaer.com cent62.localhost localhost localhost.localdomain
    接続用PCのIP  hoge  hoge.mukaer.com

/etc/nsswitch.conf

    hosts:    files dns

/etc/resolv.conf

    nameserver ルーターのIP

おわり

参考までに、Linux系ローカルネット運用の場合

  • sshのログインが遅い
  • FTPのログインが遅い

など、遅い現象は、名前解決が正しくできない原因が考えられますので 一度見なおしされると解決するかも。

はまっった!!

関連ページ

トラックバック(1)

トラックバックURL: http://mukaer.com/cgi-bin/mt/mt-tb.cgi/57

Windows(多分関係ない)にRedmineを入れた。DBはSQLite、ServerはWebrick。 ローカルからlocalhost:3000でアク... 続きを読む

コメントする

PR

PR





検索

Loading

メニュー

twitter