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 データベース テーブルのパーティション分割に関する考慮事項 [推奨]

推薦する

HTML チュートリアル、簡単に学べる HTML 言語 (2)

*******************HTML言語入門(パート2)*****************...

Dockerでローカルマシン(ホストマシン)にアクセスする方法

質問Docker でローカル データベースにアクセスするにはどうすればよいでしょうか? 127.0....

mysql バッチで大量のデータを削除する

mysql バッチで大量のデータを削除する1000万件のレコードを持つテーブル(syslogs)があ...

CentOS7環境にMySQL5.5データベースをインストールする

目次1. 現在のシステムにMySQLがインストールされているかどうかを確認する2. インストールされ...

削除、切り捨て、ドロップの違いと選択方法

序文先週、同僚が私に尋ねました。「兄さん、MySQL にバグを見つけました。午後にディスクをクリーン...

nginx リバース プロキシでの proxy_pass の実装

フォーマットはシンプルです: proxy_pass URL; URL には、送信プロトコル (htt...

webpackでHMRを手動で実装するいくつかの方法

目次1. はじめに2. GitHub 3. 基本構成プロジェクトディレクトリパッケージ.json c...

docker compose を使用して FastDfs ファイル サーバーをインストールする詳細な例

ドッカーの作成 バージョン: '2' サービス: fastdfsトラッカー: ホスト...

docker compose を使用して fastDFS ファイル サーバーを構築する方法

前回の記事では、docker compose を使用して FastDfs ファイル サーバーをインス...

Dockerリンクはコンテナの相互接続を実現します

目次1.1. IP経由のコンテナ間のネットワークアクセス1.2. コンテナ名またはコンテナIDによる...

SQL でテーブルにフィールドとコメントを追加する方法

1. フィールドを追加します。 alter table テーブル名 ADD フィールド名 タイプ;例...

Angular CDK を使用してサービスポップアップトーストコンポーネント機能を実装する

目次1. 環境設備2. ToastコンポーネントとToastServiceを作成する2.1 Toas...

Linuxサービスの監視と運用および保守

目次1. psutilパッケージをインストールする次に、オペレーティングシステム内のすべてのサービス...

Linuxでシンボリックリンクを削除(削除)するコマンド

Linux では、シンボリック リンクを作成または削除する必要がある場合があります。もしそうなら、何...

VMware Workstation Pro が Win10 アップデートにより開けなくなる問題の解決方法

今夜の夕食後にノートパソコンの電源を入れたところ、問題が発生しました。通常、コンピューターがスリープ...