年末からお名前.comのVPSを借りて、いろいろと試してみている。
正月にこのブログなど、個人のサイトをこのサーバへ移行して運用を始めた。
その際にブログと一緒にサーバ移行をした自分用システムのレスポンスが
異常に遅くなったことに気づいた。
これはAmazonのAPI (Product Advertising API)を利用するシステムで、Rubyで開発している。
このブログでペタペタ貼ってるAmazonへのアフィリエイトはコレでHTMLを生成する。
移行前のVPSでは数秒で検索結果が返ってきていたのに
数十秒程度かかるようになったのだ。
なんだろうと思ってSSHでログインして調査していたら
どうやら名前解決のところが怪しいらしい
しばらくすると、どうもAmazonのAPIサーバだけでなく
JPドメイン全般がダメっぽいということがわかった
日本向けAmazonのAPIサーバは”webservices.amazon.co.jp”
で、yahoo.co.jpをサンプルにしてtimeでレスポンスを測定してみることにした。
digやnslookupでのレスポンスは問題ない。
time curl yahoo.co.jp ---------------------------------------------------------- real 0m19.275s user 0m0.002s sys 0m0.015s ----------------------------------------------------------
yahoo.co.jpへHTTPでアクセスするのに約20秒かかっている。
ちなみに、curlはWebサーバのコンテンツを閲覧できるコマンドで
コンテンツ部は省略している。
time curl gmo.jp ---------------------------------------------------------- real 0m20.104s user 0m0.008s sys 0m0.011s ----------------------------------------------------------
お名前.comのグループ本家GMOのサイトも20秒
だいたいどれも20秒なのでタイムアウトの香りがする。
hostsにIPアドレスを書いてあげると
レスポンスが0.02秒に・・・・
vi /etc/hosts ---------------------------------------------------------- 203.216.227.176 yahoo.co.jp ---------------------------------------------------------- time curl yahoo.co.jp ---------------------------------------------------------- real 0m0.020s user 0m0.006s sys 0m0.010s ----------------------------------------------------------
もう少し調べてみると、Rubyで書かれたリゾルバに置き換える
“resolv-replace”というライブラリがあることを突き止めた。
方法はただ「require ‘resolv-replace’」とするだけ。
早速試してみると、速度が改善した!
irb(main):001:0> require 'open-uri' => true irb(main):002:0> init = Time.now; open('http://yahoo.co.jp'){|f| f.read }; puts (Time.now - init) 20.16077 => nil irb(main):003:0> require 'resolv-replace' => true irb(main):004:0> init = Time.now; open('http://yahoo.co.jp'){|f| f.read }; puts (Time.now - init) 0.070994 => nil
どうも、システムコールで名前解決するとダメらしい。
後輩も同じサーバを借りているので触らせてもらったら
まったく問題なかったので、サーバの問題なんじゃないかとは思う。
根本的な解決ではないけれどもリゾルバについて勉強になったのでよしとする。
現在、サポートに問い合わせ中。
あと、JPドメインの名前解決が怪しいことから
IPv6が原因である可能性もあるようだ。
せっかくなのでもう少し調べてみる予定。
美味しんぼ100巻超えてたんか・・・
ちょっと前お名前のDNSが盛大にコケてましたがその影響もあるんでしょうか、、
そういえば、障害情報にそんな話が載っていましたね。なにかしら、影響があるのかもです。
まだ、サポートからは調査結果の連絡がありませんが。