高い同時実行性の下でNginxのパフォーマンスを最適化する方法をまとめます

高い同時実行性の下でNginxのパフォーマンスを最適化する方法をまとめます

私たちは最後に、暗闇のない場所で会うことになるでしょう。 ~ジョージ、1984年

Nginx は Apache と同様に Web サーバーです。 REST アーキテクチャ スタイルに基づいて、Uniform Resource Descriptor (URl) または Uniform Resource Locator (URL) を通信の基盤として使用し、HTTP プロトコルを通じてさまざまなネットワーク サービスを提供します。

Apache は長い歴史を持ち、誰もが認める世界最大のサーバーです。安定性、オープンソース、クロスプラットフォームなど、多くの利点があります。それが登場してから長い時間が経ち、登場した当時はインターネット業界は今日ほど発達していませんでした。そのため、重量級になるように設計されています。多数の同時サーバーをサポートしていません。 Apache で数万の同時アクセスを実行すると、サーバーは大量のメモリを消費します。また、オペレーティング システムのプロセスまたはスレッドの切り替えによっても大量の CPU リソースが消費され、HTTP リクエストの平均応答速度が低下します。

これらすべてにより、Apache は高性能な WEB サーバーにはなれないと判断され、軽量で同時実行性の高いサーバーである Nginx が誕生しました。

特徴

これは、軽量の IMAP/POP3/SMTP サービスを提供する高性能 HTTP およびリバース プロキシ Web サーバーです。2004 年 10 月 4 日にリリースされました (最初の公開バージョン 0.1.0)。Nginx の安定バージョン 1.4.0 は、2013 年 4 月 24 日にリリースされました。C 言語で記述された Nginx は、クロスプラットフォーム サーバーです。Nginx には独自の関数ライブラリがあり、zlib、PCRE、OpenSSL を除き、標準モジュールはシステム C ライブラリ関数のみを使用します。

利点

メモリの占有量が少ない (3W の同時接続では、開かれた 10 個の nginx プロセスが約 150M のメモリを消費します) 高い同時実行能力 (公式テストでは 5W の同時接続をサポートでき、実際の運用環境では 2~3W の同時接続に達することができます) シンプル (構成ファイルはわかりやすい) 価格 (無料、オープンソース) Rewriter 書き換えをサポート (ドメイン名と URL に応じて、HTTP リクエストを異なるバックエンド サーバー グループに分割できます) ヘルス チェックが組み込まれています (nginx バックエンドの複数のサービスがダウンしても、フロントエンドのアクセスには影響せず、サービスの状態を自動的に検出できます) 帯域幅を節約 (GZIP 圧縮をサポートし、ブラウザーのローカル キャッシュ ヘッダーを追加できます)
安定性が高く、リバース プロキシで、ダウンタイムはほとんどありません。中国本土の nginx ウェブサイトのユーザーには、Baidu、JD.com、Sina、NetEase、Tencent、Taobao などがあります。

機能: Web サーバー、軽量、負荷分散、キャッシュ、高同時実行性

アプリケーションシナリオ: プロキシサーバー、IP 負荷、静的負荷、動的および静的分離、電流制限、ヘルスモニタリング

インストールとコマンド

インストール:

sudo apt-get でnginxをインストールします

バージョンを表示

nginx -v                  
nginx バージョン: nginx/1.18.0 (Ubuntu)

基本コマンド

# nginx のアクセス ページの特定の場所 (nginx へようこそ) vi /usr/share/nginx/html/index.html
# アクセスIP
カール 192.168.100.111
#nginxプロセスをシャットダウンする nginx -s stop
# nginxプロセスを起動します /usr/sbin/nginx # yumでインストールされたnginxもservic nginx startを使用できます
# 設定ファイルが正しいか確認する nginx –t
# 設定ファイルを再読み込みする nginx –s reload
# ログを表示します tail -f ファイル名 # 表示ファイルはデフォルトで 10 行です。表示を更新します # 例: tail -f /var/log/lvs-agent.log tail -f /etc/nginx/nginx.conf
# ファイルの最後の数行を表示します。 tail -n 行番号 ファイル名 例: tail -n 100 /var/log/aa.log
# ネットワークカードのIPを削除する
IP アドレス del 192.168.11.5/32 dev lo (lo eth1 eth2)
# lvs はすべてのクラスター サービスをクリアします ipvsadm –C
# eth0 ネットワークカードの IP 値を取得します ip a|grep eth0|grep inet|awk '{print $2}'|cut -d "/" -f1
# IPまたはURLが利用可能かどうかを確認し、200を返します
カール -I -m 10 -o /dev/null -s -w %{http_code} 10.110.26.10:8080
# jar パッケージをバックグラウンドで起動します nohup java -jar /usr/sbin/プロジェクト名.jar >>/var/log/プロジェクト名.log 2>&1 &
# 前のコマンドが正常に実行されたかどうかを確認します。正常に実行された場合は 0 を返します。それ以外の場合は echo $?
# nginx プロセスが開始されているかどうかを確認します。このコマンドは、コード内でnginxプロセスが起動しているかどうかを判断するために使用されます。ps aux | grep nginxのみを使用すると、起動していなくても内容が返され、判断に影響します。ps aux | grep nginx | ​​greo –v grep

設定ファイル

nginx.conf

nginx.conf をカスタマイズするには、以下のコマンドを実行します。
# グローバル設定領域 user www-data;
ワーカープロセスは自動です。
pid /run/nginx.pid;
/etc/nginx/modules-enabled/*.conf を含めます。
# ネットワークイベント構成エリアイベント {
	ワーカー接続数 768;
	# multi_accept オン;
}
# HTTPモジュール http {
	##
	# HTTP グローバル設定 ##
	ファイル送信オン;
	tcp_nopush オン;
	tcp_nodelay オン;
	キープアライブタイムアウト65;
	タイプハッシュの最大サイズは2048です。
	# server_tokens オフ;
	# server_names_hash_bucket_size 64;
	# server_name_in_redirect をオフ;
	/etc/nginx/mime.types を含めます。
	デフォルトタイプ アプリケーション/オクテットストリーム;
	##
	# SSL設定 ##
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # SSLv3 の削除、参照: POODLE
	ssl_prefer_server_ciphers をオン;
	##
	# ログ設定 ##
	アクセスログ /var/log/nginx/access.log;
	エラーログ /var/log/nginx/error.log;
	##
	# リソース圧縮設定 ##
	gzip on; # デフォルトで有効 # gzip_vary on;
	# gzip_proxied 任意;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_バージョン 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
	##
	# 仮想ホストの設定 ##
	/etc/nginx/conf.d/*.conf を含めます。
	/etc/nginx/sites-enabled/* を含めます。
}

/etc/nginx/sites-enabled/*

server { # 仮想ホストの設定 listen 80 default_server; # リスニングポート listen [::]:80 default_server;
	# SSL 設定 #
	# 443 ssl default_server をリッスンします。
	# listen [::]:443 ssl default_server;
	#
	# 注意: SSL トラフィックでは gzip を無効にする必要があります。
	# 参照: https://bugs.debian.org/773332
	#
	# 安全な構成を確保するには、ssl_ciphers について読んでください。
	# 参照: https://bugs.debian.org/765782
	#
	# ssl-cert パッケージによって生成された自己署名証明書
	# 本番サーバーでは使用しないでください。
	#
	# snippets/snakeoil.conf をインクルードします。	
	# データキャッシュの場所 root /var/www/html;
	# PHPを使用している場合は、リストにindex.phpを追加します
	インデックス index.html index.htm index.nginx-debian.html;	
	#ドメイン名、server_name は複数指定できます _;	
	# / location / でリバースプロキシを実行します {
		# まずリクエストをファイルとして提供しようとし、次に
		# ディレクトリとして保存すると、404 が表示されます。
		uwsgi_pass 127.0.0.1:8000;
		/etc/nginx/uwsgi_params を含めます。
		try_files $uri $uri/ =404;
	}
	# PHPスクリプトをFastCGIサーバーに渡す
	#
	#場所 ~ \.php$ {
	# snippets/fastcgi-php.conf をインクルードします。
	#
	# # php-fpm (または他の Unix ソケット) の場合:
	# fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
	# # php-cgi (または他の TCP ソケット) の場合:
	#fastcgi_pass 127.0.0.1:9000;
	#}
	# Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する
	# nginxのものと一致します
	#
	#場所 ~ /\.ht {
	# すべて拒否;
	#}
}

プロキシモードとリバースプロキシ構成

フォワードプロキシ:

クライアント(ユーザーA)とオリジンサーバー(配信元サーバー)(ターゲットサーバー)の間に位置するサーバー(プロキシサーバー)です。クライアントはオリジンサーバーからコンテンツを取得するために、プロキシサーバーにリクエストを送信し、ターゲット(オリジンサーバー)を指定します。プロキシサーバーはリクエストをオリジンサーバーに転送し、取得したコンテンツをクライアントに返します。フォワード プロキシを使用するには、クライアントは特別な構成を実行する必要があります。一般的に、特別な説明がない限り、プロキシ技術はデフォルトでフォワードプロキシ技術を指します。

これはプロの仲介者と同等であり、クライアントと実際のサーバーは通信できません。クライアントは自分が仲介者であることを知っています。

リバースプロキシ:

フォワード プロキシとは対照的に、クライアントからはオリジン サーバーのように見え、クライアントは特別な構成を実行する必要がありません。クライアントはリバース プロキシの名前空間内のコンテンツに通常の要求を送信し、リバース プロキシは要求を転送する場所 (元のサーバー) を決定し、コンテンツが元々クライアントに属していたかのように、取得したコンテンツをクライアントに返します。

それは、家を売買する人に相当します。家を買うときは売り手に対して買い手がいて、家を売るときは買い手に対して売り手がいます。
クライアントはそれがプロキシ サーバーであることを認識せず、サーバーもそれがプロキシ サーバーではなく単なるクライアントであると考えています。

透過プロキシ:

透過プロキシとは、クライアントがプロキシ サーバーの存在をまったく知る必要がないことを意味します。リクエスト フィールド (メッセージ) を調整し、実際の IP を送信します。暗号化された透過プロキシは匿名プロキシであるため、プロキシを設定する必要がないことに注意してください。透過的なプロキシの実践例としては、現在多くの企業で使用されている行動管理ソフトウェアが挙げられます。

ここに画像の説明を挿入

# リバースプロキシはデフォルトで無効になっています # アップストリームのlocalhostはアップストリームのlocalhostのバランスをとるサードパーティのモジュールです {
	# 実際のサーバー server 192.168.136.133:8081;
	サーバー 192.168.136.133:8081;
	サーバー 192.168.136.133:8081;
} 
# サーバーをロード {
	listen 80 # プロキシサーバーポート server_name localhost;
	位置 / {
		proxy_pass http://localhost; # リクエストを実際のサーバーの 1 つに送信します }
}

負荷分散方法:

ポーリング方法(デフォルト)

加重ラウンドロビン(重み)

公平

url_ハッシュ

送信元アドレスのハッシュ

最小接続

静的と動的の分離

Nginx の動的および静的分離は、単に動的リクエストと静的リクエストを分離することを意味します。動的ページを静的ページから単に物理的に分離するという意味ではありません。

厳密に言えば、動的リクエストは静的リクエストから分離する必要があります。静的ページを処理するために Nginx を使用し、動的ページを処理するために Tomcat を使用するというように理解できます。

現在の実装の観点から、動的分離と静的分離は、おおまかに次の 2 つのタイプに分けられます。

  • 1 つは、静的ファイルを別のドメイン名に分離し、別のサーバーに配置するという単純な方法であり、これは現在主流のソリューションでもあります。
  • 1つは、動的ファイルと静的ファイルを一緒に公開し、nginxを介して分離することです。

mkdir static #静的ファイルを保存する

server { # 仮想ホストの設定 listen 80 default_server; # リスニングポート listen [::]:80 default_server;
	
	# データキャッシュの場所 root /var/www/html;

	# PHPを使用している場合は、リストにindex.phpを追加します
	インデックス index.html index.htm index.nginx-debian.html;
	
	#ドメイン名、server_name は複数指定できます _;
	
	# / location / でリバースプロキシを実行します {
		# まずリクエストをファイルとして提供しようとし、次に
		# ディレクトリとして保存すると、404 が表示されます。
		uwsgi_pass 127.0.0.1:8000;
		/etc/nginx/uwsgi_params を含めます。
		try_files $uri $uri/ =404;
	}
	# これらのファイル拡張子のいずれかである場合は、ここで検索してください location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css) $ {
		ルート /static;
		30日で期限切れ; # キャッシュの有効期間 }
}

ログ管理

ログ形式

ログは、Nginx ルート ディレクトリの logs/access.log ファイルに生成されます。デフォルトのログ形式は「main」です。デフォルトのログ形式「main」をカスタマイズすることもできます。

og_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
$remote_addr: クライアント IP アドレス (プロキシ サーバー、プロキシ サービス IP を表示)
$remote_user: リモート クライアントのユーザー名を記録するために使用されます (通常は "-")
$time_local: アクセス時間とタイムゾーンを記録するために使用されます。$request: 要求された URL と要求メソッドを記録するために使用されます。$status: 応答ステータス コード (例: 200 成功、404 ページが見つかりません、など)。
$body_bytes_sent: クライアントに送信されたファイル本体のコンテンツのバイト数

丸太の伐採

Nginx ログファイルにはローテーション機能がありません

毎日ログ ファイルを書き込みます。ログ ファイルを自動的に切り取る nginx ログ切り取りスクリプトを作成できます。

  • 最初のステップは、ログ ファイルの名前を変更することです (名前を変更した後は nginx がログ ファイルを見つけられないため、ログ ファイルが失われる心配はありません。元の名前でログ ファイルを再度開く前に、nginx は名前を変更したファイルにログを書き込みます。Linux は、ファイル名ではなくファイル記述子でファイルを検索します)
  • 2番目のステップは、USR1シグナルをnginxメインプロセスに送信することです。
    シグナルを受信すると、nginx メインプロセスは設定ファイルからログファイル名を読み取り、ログファイル (設定ファイル内のログファイルにちなんで命名) を再度開き、ワーカープロセスのユーザーをログファイルの所有者として使用します。ログファイルを再度開いた後、nginx メインプロセスは同じ名前のログファイルを閉じ、ワーカープロセスに新しく開いたログファイルを使用するように通知します。ワーカープロセスはすぐに新しいログファイルを開き、同じ名前のログファイルを閉じてから、古いログファイルを処理できます。 [またはnginxサービスを再起動する]

nginx ログを 1 分ごとに自動的にカットするスクリプトは次のとおりです。

新しいシェルスクリプトを作成する

高同時実行アーキテクチャ分析

高い同時実行性とは何ですか?

高い同時実行性は、インターネット分散システム アーキテクチャの設計で考慮しなければならない要素の 1 つです。これは通常、システムが同時に多数のリクエストを並行して処理できるように設計されていることを意味します。

高い同時実行性に関連して一般的に使用される指標には、応答時間、スループット、1 秒あたりのクエリ数 (QPS)、同時ユーザー数などがあります。

  • 応答時間: システムがリクエストに応答するまでにかかる時間
  • スループット: 単位時間あたりに処理されるリクエストの数。
  • QPS: 1秒あたりのリクエスト数

システムの同時実行機能を向上させるにはどうすればよいでしょうか?

インターネット分散アーキテクチャ設計の同時実行機能を向上させるための主な方法論的アプローチには、垂直拡張 (ScaleUp) と水平拡張 (ScaleOut) の 2 つがあります。

垂直拡張: 単一マシンの処理能力を向上します。垂直方向にスケーリングするには 2 つの方法があります。

  • スタンドアロンハードウェアのパフォーマンスを向上
  • 単一マシンアーキテクチャのパフォーマンスの向上

インターネットビジネスが急速に発展していた初期の頃は、予算に問題がなければ、システムの同時実行能力を向上させるために「スタンドアロンハードウェアのパフォーマンスを強化する」という方法を使用することが強く推奨されていました。この段階では、企業の戦略は時間に敏感な方法でビジネスを展開することであり、「スタンドアロンハードウェアのパフォーマンスを強化する」ことが最も速い方法であることが多かったためです。

単一マシンのハードウェア パフォーマンスを向上させる場合でも、単一マシン アーキテクチャのパフォーマンスを向上させる場合でも、致命的な欠点があります。単一マシンのパフォーマンスには常に限界があります。したがって、インターネット分散アーキテクチャ設計における高並行性を実現する究極のソリューションは、水平拡張です。

水平拡張: サーバーの数を増やすだけで、システム パフォーマンスを直線的に拡張できます。

サーバーには限界がある

達成するための3つの方法

limit_conn_zone (接続フローを制限する)

limit_req_zone (リクエストフローを制限する)

ngx_http_upstream_module (バックエンド サービスの制限)

ここに小さなツールがあります:テストツールのダウンロードを制限する

yum インストール http-tools -y
意味
ドキュメントパステスト済みページ
文書の長さページサイズ
同時実行レベル同時接続数、同時接続ユーザー数
テストにかかる時間テストに費やした合計時間
リクエストを完了する合計リクエスト数、同時接続数
失敗したリクエスト失敗したリクエストの数
書き込みエラーエラー数
1秒あたりのリクエスト数1秒あたりのリクエストスループット
リクエストあたりの時間各リクエストへの対応には時間がかかります

接続フローの制限

http {
	# バイナリリモートアドレス:IP
	# zone=one:10m; 接続されたIPを保存するための10Mのスペースを申請する
	limit_conn_zone $binary_remote_addr ゾーン=1:10m;
	
	サーバー{
		# ゾーン領域では、毎回 10 個の接続が解放され、nginx limit_conn one 10 によって処理されます。
	}
}

リクエストフローの制限(レート制限)

http {
	# レートは、各接続が 1 秒あたり 1 つの接続を送信できることを意味します。limit_req_zone $binary_remote_addr zone=req_one:10m rate=1r/s;
	
	サーバー{
		# brust: トークンを 1 つずつ追加します。120 個のトークンが発行されるとエラー 503 が報告されます。
		limit_req ゾーン=req_one brust=120;
	}
}

バックグラウンドサービスの制限

このモジュールは、必要なバックエンドの電流制限機能を提供します。

このモジュールにはパラメータがあります: max_connsはサーバーのフローを制限できますが、これはnginxの商用バージョンでのみ使用できます。

nginx1.11.5以降、公式はこのパラメータを商用バージョンから分離しました。つまり、本番環境で広く使用されているnginx1.9.12および1.10バージョンをアップグレードする限り、これを使用できるということです。

サーバー{
	# max_conns 受信サービスの最大数 サーバー 127.0.0.1:8080 max_conns=100;
}

セキュリティ構成

バージョンセキュリティ

http {
	server_tokens オフ;
}

IPセキュリティ

http {
	位置 / {
		allow 127.0.0.1; # ホワイトリスト deny all; # ブラックリスト }
}

ファイルセキュリティ

http {
	場所 /logs{
		autoindex on; # ディレクトリのルートを表示します /static;
	}
	場所 ^/logs~*\.(log|txt)$ {
		ヘッダーコンテンツタイプ text/plain を追加します。
		ルート /static;
	}
}

接続セキュリティ

http {
	# SSL設定
}

Nginx の最適化

Nginxのメイン設定ファイルを調整して同時実行性を高める

worker_processes 2;# CPUイベントと一致するように調整します{
	# ワーカーあたりの同時接続の最大数 worker_connection 65535;
}

Nginx の長い接続: HTTP1.1 以降、HTTP プロトコルは永続的な接続、つまり長い接続をサポートします。その利点は、1 つの TCP 接続で複数の HTTP 要求と応答を送信できることです。

Nginxの長い接続と短い接続は、サーバーの災害復旧能力を高めることができます

接続の確立と終了にかかるコストと遅延を削減します。 nginx をリバース プロキシまたは負荷分散として使用する場合、クライアントからの長い接続要求は短い接続に変換され、サーバーに送信されます。長い接続をサポートするには、nginx サーバーでいくつかの構成を行う必要があります。

nginx を使用する場合、長い接続を実現したい場合は、次の 2 つのことを実行する必要があります。

  • クライアントから nginx への接続は長い (イベント)
  • nginxからサーバーへの接続は長いです(http)

クライアントにとって、nginx は実際にはサーバーの役割を果たします。逆に、サーバーにとって、nginx はクライアントです。

イベント {
	# キープアライブ タイムアウト、デフォルトは 60 秒です。このパラメータは大きく設定しすぎないように注意してください。そうしないと、多くの無効な http 接続が nginx 接続の数を占有し、最終的に nginx がクラッシュしてしまいます。
	キープアライブタイムアウト60;
}
http {
	キープアライブタイムアウト60;
}

Nginx 圧縮

Gzip 圧縮機能: 応答メッセージをクライアントに送信する前に圧縮機能を有効にすると、帯域幅を効果的に節約し、クライアントへの応答速度を向上させることができます。圧縮は nginx の CPU パフォーマンスを消費します。

Gzip圧縮はhttp、サーバー、ロケーションモジュールで設定できます。

http {
    #gzip モジュール設定 #圧縮をオンにする gzip をオンにします。
    # 圧縮ページに許可される最小バイト数を設定します。ページのバイト数は、ヘッダーのコンテンツ長から取得されます。
    デフォルト値は 0 で、ページのサイズに関係なくページが圧縮されます。 2k より大きいバイト数に設定することをお勧めします。2k 未満の場合、圧縮率が高くなる可能性があります。
    gzip_min_length 2k;
    # gzip 圧縮結果のデータ ストリームを保存するために、複数のキャッシュ ユニットを取得するようにシステムを設定します。 たとえば、4 4k は、メモリが 4k 単位で要求されることを意味します。これは、4k 単位の元のデータ サイズの 4 倍です。 4 8kは元のデータサイズに応じて単位が8kであることを意味します
    ユニットのメモリの 4 倍を要求します。
    # 設定されていない場合は、デフォルト値として、gzip 圧縮結果を格納するために元のデータと同じサイズのメモリ領域が適用されます。
    gzip_バッファ 4 16k;
    #圧縮レベル、1~10、数字が大きいほど圧縮率は高くなりますが、CPU 時間も長くなります gzip_comp_level 5;
    # デフォルト値: gzip_types text/html (js/css ファイルはデフォルトでは圧縮されません)
    # 圧縮タイプ、圧縮のMIMEタイプと一致 # ワイルドカードテキスト/*は使用できません
    # (指定の有無に関わらず) text/html はデフォルトで圧縮されます # 圧縮するテキストファイルの種類を設定するには、conf/mime.types を参照してください
    gzip_types テキスト/プレーン アプリケーション/xjavascript テキスト/css アプリケーション/xml;
    # 値は 1.0 と 1.1 で、http プロトコル 1.0 を圧縮するかどうかを示します。1.0 を選択した場合は、1.0 と 1.1 の両方を圧縮できます。gzip_http_version 1.0
    # IE6以下の圧縮を無効にする gzip_disable "MSIE [1-6]\.";
    # デフォルト値: オフ
    # Nginx をリバース プロキシとして使用する場合に有効にし、バックエンド サーバーによって返される結果をオンまたはオフにします。一致の前提条件は、バックエンド サーバーが「Via」を含むヘッダーを返す必要があることです。
    # off - すべてのプロキシ結果データの圧縮をオフにします # expired - 「Expires」ヘッダーが含まれている場合に圧縮を有効にします # no-cache - 「Cache-Control: no-cache」ヘッダーが含まれている場合に圧縮を有効にします # no-store - 「Cache-Control: no-store」ヘッダーが含まれている場合に圧縮を有効にします # private - 「Cache-Control: private」ヘッダーが含まれている場合に圧縮を有効にします # no_last_modified - 「Last-Modified」ヘッダーが含まれていない場合に圧縮を有効にします # no_etag - 「ETag」ヘッダーが含まれていない場合に圧縮を有効にします # auth - 「Authorization」ヘッダーが含まれている場合に圧縮を有効にします # any - 無条件に圧縮を有効にします gzip_proxied expired no-cache no-store private auth;
    # CDNとプロキシサーバーの場合、同じURLに対して、gzip_varyのヘッダー情報に基づいて圧縮コピーと非圧縮コピーが返されることがあります。
}

状態監視

サーバー{
	場所 /NginxStatus {
		stub_status オン;
		access_log オフ;
	}
}

プラグインのインストール

./configure --prefix=... --with-http_stub_status _module

上記は、高同時実行性における Nginx パフォーマンスを最適化する方法の詳細な概要です。高同時実行性における Nginx パフォーマンスの最適化の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Nginx10m+の高並列カーネル最適化に関する簡単な説明
  • 高同時実行シナリオにおける nginx 最適化の詳細な説明
  • Nginx+Lua+Redis は高並列 Web アプリケーションを構築します
  • Lvs+Nginx クラスターを使用して高並列アーキテクチャを構築する例

<<:  CSS3を使用してフォントカラーグラデーションを実装する

>>:  Sitemesh チュートリアル - ページ装飾技術の原理と応用

推薦する

要素UIポップアップコンポーネントをカプセル化する手順

el-dialogをコンポーネントとしてカプセル化するelement-ui を使用する場合、ポップア...

アクセス速度を上げるためにウェブサイトを最適化する方法の更新

最近、同社はitpubを皮切りに、コーポレートウェブサイト傘下の全サイトの評価を開始した。そのために...

MySQL複合インデックスの概要

目次1. 背景2. 複合インデックスを理解する3. 左端一致原則4. フィールド順序の影響5. 単一...

Vueはタブを切り替えてデータの状態を維持する3つの方法を実装します

Vue でタブ切り替えを実装する 3 つの方法1. v-showはコンテンツの切り替えを制御します1...

CSS の位​​置属性 (absolute|relative|static|fixed) の概要と応用

まず、CSS3 Api の position 属性の定義を見てみましょう。 static: 特別な配...

ApacheのDjangoオンライン展開方法

環境: 1. Windows Server 2016 Datacenter 64 ビット 2. SQ...

Docker 実行オプションを使用して Dockerfile の設定を上書きする

通常は、最初に Dockerfile ファイルを定義し、次に docker build コマンドを使...

js の getBoundingClientRect() メソッドの詳細な説明

1. getBoundingClientRect() 分析getBoundingClientRect...

JSはBaidu Newsナビゲーションバーの効果を実現

この記事では、Baidu News Navigation Barの効果を実現するための具体的なJSコ...

Nginx + consul + upsync を使用して動的負荷分散を実現する方法の詳細な説明

目次前提条件DNSドメイン名解決プロセス外部ネットワークマッピングnginxコア知識nginxとはア...

デジタル時計効果を実現するJavaScript

この記事では、デジタル時計効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...

Linux bash: ./xxx: バイナリ ファイルを実行できません エラー

今日、Ubuntu 用の小さなツールを顧客に送りましたが、ユーザーはそれを受け取った後、実行できませ...

Vue.js での $emit の使用に関する詳細な説明

1. 親コンポーネントは props を使用して子コンポーネントにデータを渡すことができます。 2....

Webデザインチュートリアル(7):Webデザインの効率化

<br />前の記事:Webデザインチュートリアル(6):デザインへの情熱を持ち続けまし...

Nginx でバージョン番号を隠したり偽造したりする方法

1. デフォルトでアクセスするには、curl コマンドを使用します。 # curl -I http:...