BT

RubyのNet::HTTPで何が良くないのか?

| 作者: Mirko Stocker フォローする 1 人のフォロワー , 翻訳者 編集部 フォローする 0 人のフォロワー 投稿日 2008年11月23日. 推定読書時間: 1 分 |

「RubyのNet:HTTPの実装では、何が良くないのか?」と聞くものもいるかもしれない。Adam Nelson氏は、大量のデータを転送するアプリケーションで見たものに驚いた。「実際に起こっていることは、CPUの最大回転数であり、1024バイト のチャンクでデータは転送される」(リンク)。Adam氏は初回の分析(リンク)でそれを発見した。実際の問題は「すべての単一rbuf_fill呼び出しについてタイムアウ トを配置する」ことであると、 Alex Young氏は述べている。「そこでデフォルトで、受信する1000バイトのデータごとに新たなスレッドを作成する必要がある」。

Rubyとライブラリのさまざまな実装を比較すると(リンク)、Ruby 1.8.6は「 もっとも近い競争相手(Ruby 1.8.7)より2倍もの多くのCPU」を使用することが分かり、Ruby 1.8.7はより大きなバッファー(16K)を使用する。興味深いことに、Ruby 1.9.0は最小のCPU使用率であり、readpartial(リンク)を使用する実装つきで、「ソケットの読み出しのタイムアウトがなく」、「それぞれの読み出 しには事前に割り当てられたストリングがある」。Zed Shaw氏によるMongrelコアに基づいた純粋なRuby実装であるRFuzz(リンク)が、すぐ後ろにある。

この問題は新しくはない。2006年のRuby会議のメーリングリストのスレッド(リンク)でその問題や次善策について議論している。

また、これはオープンソースの実装がいかに便利で、価値があるかを示す好個の模範である。

 

原文はこちらです:http://www.infoq.com/news/2008/11/ruby-http-problems

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT