Nginx10m+の高並列カーネル最適化に関する簡単な説明

Nginx10m+の高並列カーネル最適化に関する簡単な説明

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

  • デフォルトの Linux カーネル パラメータは、最も一般的なシナリオ向けに設計されており、高同時アクセスをサポートする Web サーバーには適していません。したがって、Nginx のパフォーマンスを向上させるには、Linux カーネル パラメータを変更する必要があります。
  • カーネルを最適化する際にできることはたくさんありますが、通常はビジネスの特性に応じて調整します。Nginx を静的 Web コンテンツ サーバー、リバース プロキシ、または圧縮を提供するサーバーとして使用する場合、カーネル パラメータの調整は異なります。ここでは、Nginx がより多くの同時リクエストをサポートできるようにする最も一般的な TCP ネットワーク パラメータの簡単な構成を行います。
  • カーネルパラメータを変更するには、/etc/sysctl.conf を変更する必要があります。

設定方法

構成の詳細

# 単一のプロセスが開くことができるハンドルの最大数を示します。

fs.ファイル最大 = 999999

#パラメータを 1 に設定すると、TIME_WAIT 状態のソケットを新しい TCP 接続に再利用できます。TIME_WAIT 状態のリンクは常に多数存在するため、これはサーバーにとって非常に重要です。

ネット.ipv4.tcp_tw_reuse = 1

#キープアライブが有効な場合、TCP がキープアライブ メッセージを送信する頻度。デフォルトは 2 時間です。10 分に設定すると、無効なリンクをより速くクリアできます。

ner.ipv4.tcp_keepalive_time = 600

#サーバーが積極的に接続を閉じると、ソケットはFIN_WAIT_2状態に長時間留まります

ネット.ipv4.tcp_fin_timeout = 30

#このパラメータは、オペレーティング システムで許可される TIME_WAIT ソケットの最大数を示します。この数を超えると、TIME_WAIT ソケットは直ちにクリアされ、警告メッセージが出力されます。

#このパラメータのデフォルトは 180000 です。TIME_WAIT ソケットが多すぎると、Web サーバーの速度が低下します。

ネット.ipv4.tcp_max_tw_buckets = 5000

#UDP および TCP リンクのローカル ポートの値の範囲を定義します。

net.ipv4.ip_local_port_range = 1024 65000

#TCP受信バッファの最小値、デフォルト値、最大値を定義します。

ネット.ipv4.tcp_rmem = 10240 87380 12582912

#TCP送信バッファの最小値、デフォルト値、最大値を定義します。

ネット.ipv4.tcp_wmem = 10240 87380 12582912

#ネットワーク カードがデータ パケットを受信する速度がカーネルの処理速度よりも速い場合、これらのデータ パケットを保存するためのキューが存在します。このパラメータはキューの大きい値を表します。

net.core.netdev_max_backlog = 8096

#カーネル ソケットがバッファのデフォルト サイズを受け入れることを示します。

ネットコアrmem_default = 6291456

#カーネルソケット送信バッファのデフォルトサイズを示します。

ネットコアwmem_default = 6291456

#カーネルソケットの受け入れバッファのサイズが大きいことを示します。

ネットコアrmem_max = 12582912

#カーネルソケット送信バッファの最大サイズを示します。

ネットコアのwmem_max = 12582912

注: 上記の 4 つの構成は、ビジネス ロジックと実際のハードウェア コストに基づいて総合的に検討する必要があります。

#パフォーマンスとは関係ありません。 TCP の SYN 攻撃を解決するために使用されます。

ネット.ipv4.tcp_syncookies = 1

#このパラメータは、TCP 3 ウェイ ハンドシェイク確立フェーズ中に受け入れられる SYN 要求キューの最大長を示します。デフォルトは 1024 です。これより大きい値に設定すると、Nginx がビジー状態のため新しい接続を受け入れられない場合に、Linux がクライアントによって開始された接続要求を失うことを防ぐことができます。

ネット.ipv4.tcp_max_syn_backlog = 8192

#このパラメータは、timewait 高速リサイクルを有効にするために使用されます。

ネット.ipv4.tcp_tw_recycle = 1

このオプションのデフォルト値は 128 です。このパラメータは、システムによって同時に開始される TCP 接続の数を調整するために使用されます。同時実行性の高い要求では、デフォルト値によって接続タイムアウトまたは再送信が発生する可能性があるため、この値は同時実行性の高い要求の数と組み合わせて調整する必要があります。

ネットコアsomaxconn=262114

#オプションは、システム内の、どのユーザー ファイル ハンドルにも関連付けられていない TCP ソケットの最大数を設定するために使用されます。この数を超えると、孤立したリンクは直ちにリセットされ、警告メッセージが出力されます。この制限は、単純な DOS 攻撃を防ぐために、この制限に過度に依存したり、この値を減らすことを考えたりしないことを意味します。多くの場合、この値を増やします。

ネット.ipv4.tcp_max_orphans=262114

使いやすさのために、以下を直接コピーすることができます

ネット.ipv4.tcp_tw_reuse = 1
fs.ファイル最大 = 999999
ネット.ipv4.tcp_fin_timeout = 30
ner.ipv4.tcp_keepalive_time = 600

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 高い同時実行性の下でNginxのパフォーマンスを最適化する方法をまとめます
  • 高同時実行シナリオにおける nginx 最適化の詳細な説明
  • Nginx+Lua+Redis は高並列 Web アプリケーションを構築します
  • Lvs+Nginx クラスターを使用して高並列アーキテクチャを構築する例

<<:  Vueの最初のレンダリングのプロセス全体についての簡単な説明

>>:  MySQL データベース テーブルのパーティション分割に関する考慮事項 [推奨]

推薦する

MySQL 接続制御プラグインの紹介

目次1. 接続制御プラグイン(connection_control)の紹介1.1 connectio...

3つのDocker Nginxログの処理の詳細な説明

社内の同僚は Nginx ログの標準出力、つまりコンソール経由の処理を必要としているため、まずログを...

nginxリバースプロキシのyum設定の詳細な手順

パート0 背景社内のイントラネットサーバーは直接インターネットにアクセスすることはできませんが、外部...

HTML+CSS+JavaScript でガールフレンド版のスクラッチ カードを作成します (一度見ればすぐに覚えられます)

誰もがスクラッチ チケットで遊んだことがあると思います。子供の頃、ポケットにお金が入るとすぐに友達に...

Linux仮想マシンを作成し、仮想マシンネットワークを設定する方法に関するVMwareの詳細なチュートリアル

VMware で Linux 仮想マシンを作成し、VMware と仮想マシンのネットワークを設定する...

AngularでTweenMaxアニメーションライブラリを使用する際の問題と解決策

最近何もすることがないのでCSSをいじっていますより良いアニメーションライブラリTweenMaxを見...

MySQL 5.7 のインストールと設定方法のグラフィックチュートリアル

このチュートリアルでは、MySQL 5.7のインストールと設定方法を参考までに紹介します。具体的な内...

MySQL 集計統計データの低速クエリの最適化

前面に書かれた注文テーブル、アクセス記録テーブル、商品テーブルなど、日常生活でデータベースを操作する...

HTML 要素に注釈を付けるときにクラスと ID のどちらが優れているかを分析する

Web ページには、非常に複雑な HTML 構造があります。CSS を使用して関連するスタイルを定義...

ネイティブJSが様々なスポーツの均一な動きを実現

この記事では、ネイティブ JS で実装された均一なモーションを紹介します。その効果は次のとおりです。...

WeChat アプレット wxss で外部 CSS ファイルとアイコンフォントを参照する方法

原因外部ファイルをミニプログラムにインポートする方法は次のとおりです: @import "...

HTML テーブルタグチュートリアル (8): 背景画像属性 BACKGROUND

テーブルの背景画像を設定します。任意の GIF または JPEG 画像ファイルを使用できます。基本的...

Element UI を使用してページにページング ナビゲーション バーを追加する方法

必要ページング バーを追加します。これにより、ページにジャンプしたり、ページ番号に従って特定のページ...

Ubuntu16.04にCUDA9.0をインストールするための詳細なチュートリアル

序文:この記事は、CUDA 9.0 をインストールした経験に基づいています。CUDA 9.0 は現在...

IE6 で PNG-24 形式の画像を正常に表示させる 2 つの方法

方法1: </html>の後に次のコードを追加してください。コードをコピーコードは次のと...