H2o: なぜh2oはとても速いのですか?

作成日 2017年11月10日  ·  6コメント  ·  ソース: h2o/h2o

私はh2oが速い理由を学んでいます。

  1. 「ほとんどのパーサーとは異なり、ステートレスであり、それ自体でメモリを割り当てません。バッファと出力構造へのポインタを受け入れ、バッファの必要な部分を指すように後者のポインタを設定するだけです。」 平均?

pptを読んだり、gitの「readme」を読んだりすると、「ほとんどのパーサーとは異なり、ステートレスであり、それ自体でメモリを割り当てません。バッファへのポインタと出力構造、およびセットアップを受け入れるだけです。後者のポインタは、バッファの必要な部分を指します。」
それが何を意味するのかわかりません。 詳しく説明していただければ幸いです。

教えていただければ幸いです。

最も参考になるコメント

Lan接続を使用したUplcoud2GBインスタンスでの私の攻城戦ベンチマーク結果

コマンド--siege-v -d1 -c250 -i -f siege.txt

siege.txtには65個のURLがあります(すべてキャッシュされ、サーバー自体によって提供されます)

h2o

トランザクション:12766ヒット
可用性:99.86%
経過時間:35.62秒
転送されたデータ:580.61 MB
応答時間:0.67秒
トランザクションレート:358.39トランス/秒
スループット:16.30MB /秒
並行性:240.01
成功したトランザクション:12766
失敗したトランザクション:18
最長のトランザクション:4.64
最短取引:0.00

nginx

トランザクション:9909ヒット
可用性:99.77%
経過時間:34.35秒
転送されたデータ:455.19 MB
応答時間:0.84秒
トランザクションレート:288.47トランス/秒
スループット:13.25MB /秒
並行性:242.80
成功したトランザクション:9905
失敗したトランザクション:23
最長のトランザクション:8.84
最短取引:0.00

キャディー

トランザクション:12145ヒット
可用性:99.44%
経過時間:35.07秒
転送されたデータ:635.66 MB
応答時間:0.69秒
トランザクションレート:346.31トランス/秒
スループット:18.13MB /秒
並行性:239.72
成功したトランザクション:11813
失敗したトランザクション:69
最長のトランザクション:1.97
最短取引:0.00

全てのコメント6件

Lan接続を使用したUplcoud2GBインスタンスでの私の攻城戦ベンチマーク結果

コマンド--siege-v -d1 -c250 -i -f siege.txt

siege.txtには65個のURLがあります(すべてキャッシュされ、サーバー自体によって提供されます)

h2o

トランザクション:12766ヒット
可用性:99.86%
経過時間:35.62秒
転送されたデータ:580.61 MB
応答時間:0.67秒
トランザクションレート:358.39トランス/秒
スループット:16.30MB /秒
並行性:240.01
成功したトランザクション:12766
失敗したトランザクション:18
最長のトランザクション:4.64
最短取引:0.00

nginx

トランザクション:9909ヒット
可用性:99.77%
経過時間:34.35秒
転送されたデータ:455.19 MB
応答時間:0.84秒
トランザクションレート:288.47トランス/秒
スループット:13.25MB /秒
並行性:242.80
成功したトランザクション:9905
失敗したトランザクション:23
最長のトランザクション:8.84
最短取引:0.00

キャディー

トランザクション:12145ヒット
可用性:99.44%
経過時間:35.07秒
転送されたデータ:635.66 MB
応答時間:0.69秒
トランザクションレート:346.31トランス/秒
スループット:18.13MB /秒
並行性:239.72
成功したトランザクション:11813
失敗したトランザクション:69
最長のトランザクション:1.97
最短取引:0.00

pptを読んだり、gitの「readme」を読んだりすると、「ほとんどのパーサーとは異なり、ステートレスであり、それ自体でメモリを割り当てません。バッファへのポインタと出力構造、およびセットアップを受け入れるだけです。後者のポインタは、バッファの必要な部分を指します。」
それが何を意味するのかわかりません。 詳しく説明していただければ幸いです。

つまり、H2Oがリクエストを受信すると、HTTPパーサー自体は、リクエストの受信に必要なメモリ以外にメモリを割り当てません。 H2Oが使用するHTTP / 1パーサーはpicohttpparserであり、独自のリポジトリがあります: httpshttps://github.com/h2o/picohttpparser/blob/master/test.cがあります。

@sudarshaこれらはHTTP / 2の結果ですか?

_siege_はまだHTTP / 2をサポートしていないため、 @ xm74はそうではないようです。

Siegeはそれをサポートしていません。 h2loadにはありますが、構成に取り掛かっていません。

@deweerdt
そのおかげで、もう少し理解する機会になりました。
どうもありがとうございます。
質問があります。
「picoparser」がhttpメッセージを解析する役割であることを私は知っています。
お店はありますか?
pptでは、バッファと呼ばれます。 バッファはどのバッファですか?
Webサーバー上のバッファーですか? それはピコパーサーのバッファーですか?

そして「ステートレス」はスピードを意味しますか?
詳しく説明してください。

英語が足りません。 私の質問に不自然に聞こえたらごめんなさい。

このページは役に立ちましたか?
0 / 5 - 0 評価