ホームページ >バックエンド開発 >PHPチュートリアル >nginx の http20 パフォーマンスは驚異的で、HTTPS ウェブサイトのパフォーマンスの最適化

nginx の http20 パフォーマンスは驚異的で、HTTPS ウェブサイトのパフォーマンスの最適化

WBOY
WBOYオリジナル
2016-07-29 09:01:003493ブラウズ

背景

7 つのロード層があり、24U+64G メモリを備えた 5 台の物理マシンを使用して、https 暗号化、復号化、proxy_pass を実行します。毎日の通勤中、5 台のマシンの CPU は基本的に 50% 程度であり、これはコンピューティング タイプと考えられます。
最適化手法:キープアライブ、TLS1.2暗号アルゴリズムの最適化(参考:1、2)などがあるが、効果は大きくない。
キープアライブ オプションについて特に簡単に説明します。サーバーがどのようにサポートしているとしても、重要なのは、クライアントが維持してくれなければダメだということです。

テストプロセス

  • ハードウェア: 2 台の 24U+64G 物理マシン、1 台はテスト用、1 台は ngx を実行中、同じ LAN 内に 1GB ネットワーク カード。
  • nginx -V:

    バージョン: openresty/1.9.7.3
    gcc 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) によってビルドされました
    OpenSSL 1.0.1e-fips で構築 (2013 年 2 月 11 日)
    TLS SNI サポートが有効になりました
    –with-http_v2_module

  • Apache の ab ストレス テスト ツール: yum インストール

  • boom は、ab の golang 実装をシミュレートするストレス テスト ツールです: https://github.com/rakyll/boo
  • nghttp2 の h2load プレッシャー テスト ツール: https://github.com/tatsuhiro-t/nghttp2
  • CentOS-7 64-bit
  • テストファイルサイズ: 5k、10k 画像、静的ファイルの https テスト。
  • テストプロセス中のパラメータを簡単に見てみましょう: -c=100~3000、-n=1k~10kwのさまざまな組み合わせ、h2load -m=1~1000を使用する場合は試しました、-m範囲のサイズhttp2 の結果への影響はそれほど大きくありません。

写真:

交通図を載せると理解できます:

下の写真はabとboomを使用する場合を示しています:
nginx の http20 パフォーマンスは驚異的で、HTTPS ウェブサイトのパフォーマンスの最適化
この時はabもboomも-kを使ってもどのように弾いても計測とタイムはこの程度です。
たとえば、次のコマンドの実行には基本的に 30 分かかります:

boom -c 1000 -n 1000000 -allow-insecure https://172.16.9.234/5k.jpg
ab -c 1000 -n 1000000 -khttps://172.16.9.234/5k.jpg

パラメータを変更せずに http2 に変換した場合:

h2load -c 1000 -n 1000000 -m1 https://172.16. 9.234/5k .jpg

h2load の実行結果は次のとおりです:
nginx の http20 パフォーマンスは驚異的で、HTTPS ウェブサイトのパフォーマンスの最適化

次の図は、http2 をテストするときの h2load を示しています:
nginx の http20 パフォーマンスは驚異的で、HTTPS ウェブサイトのパフォーマンスの最適化
ギガビット ネットワーク カード、送信トラフィックがいっぱいです。

結論

次の結論は繰り返しテストされたものであり、私自身の意見のみを表しています。toontong から指定してください。

  1. 同じ同時実行数の下で、http2.0 は 4.3G データの送信にわずか 43 秒かかりました。 .1は40分以上かかりました。
  2. 送信パフォーマンスだけを見ても、送信パフォーマンスは 10 倍以上向上しており、主要な https CPU 使用率への効果は非常に明白です。
  3. もちろん、Web サービスの全体的なパフォーマンスが 10 倍向上するわけではありません。その理由は、接続を確立するのに時間がかかるためです。さらに、http2 の原理を詳しく調べる必要があります。
  4. http2 クライアント ライブラリは go1.6 以降でのみサポートされます。go の以前のバージョンでは、https://github.com/tatsuhiro-t/go-nghttp2 を使用できます
  5. http2.0 が本当に人気がある場合は、インターネット トラフィック全体に影響を与えるため、インターネット企業のマシンの節約は大きな恩恵となります。

').addClass('事前番号付け').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

上記では、驚異的な nginx の http20 パフォーマンス、HTTPS ウェブサイトのパフォーマンスの最適化について紹介しました。内容の側面も含めて、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。