まず、プロセスの最適化をコンパイルしてインストールします
1.コンパイルされたファイルのサイズを小さくしnginxの
デフォルトのデバッグモードであることを、nginxのをコンパイルすると、デバッグモードは、情報および追跡ASSERTの多くに挿入されているように、翻訳が完了した後に、nginxのは、数メガバイトを持っています。nginxのは、コンパイルnginxのわずか数百キロバイト後、コンパイルする前に、デバッグモードを解除し、次のように、それは、コンパイルする前にも、ソースコードを変更し、デバッグモードを解除することができます:
nginxのソースコードファイルが抽出された後、ソースディレクトリを見つけますあなたは以下の行を見つけることができる自動/ CC / gccのファイル:
1つの #デバッグ 2つの CFLAGS =」$ CFLAGS -g」
コメントアウトまたは2行を削除するには、デバッグモードを解除することができます。
2.特定のCPU向けに最適化CPUコンパイラの種類を指定します
:GCCコンパイラを最適化するために、Nginxは、GCCコンパイラのデフォルトパラメータ"-O"をコンパイルする場合は、次の二つのパラメータを使用することができます
' - O3' --with-OPT-CC =
CPU-CPU-OPT =#--withを特定のCPU用にコンパイルされ、有効な値が含まれる:ペンティアム、pentiumpro、pentium3、のPentium4 、アスロン、Opteronプロセッサ、AMD64、sparc32、SPARC64、PPC64
CPUタイプを決定するために、次のコマンドを:
1 [ルート@ localhostのホーム]#の猫の/ proc / cpuinfoの| grepの 「モデル名」
第二に、TCMallocの使用は、パフォーマンスを最適化するnginxの
TCMallocフルネームスレッド・キャッシュmalloc関数、Googleの「Googleの-perftools」で開発したオープンソースのツールのメンバーです。標準のmalloc glibcライブラリと比較して、メモリ割り当ての効率及び速度にTCMallocライブラリは、それによって、システムの負荷を軽減、大幅に高い同時実行の下でサーバのパフォーマンスが向上し、はるかに高いです。以下は、nginxのためのTCMallocライブラリのサポートを追加する方法について説明します。
TCMallocライブラリをインストールするにはlibunwindの(インストールせずに32ビットオペレーティングシステム)をインストールし、二つのパッケージ、ライブラリ、libunwindのを-perftoolsにGoogleに必要な、64ビットのレジスタ機能のCPUとオペレーティングシステムプログラムに基づいて、基本的な関数呼び出しと関数呼び出しチェーンを提供します。以下は、nginxのTCMallocの最適化を使用して、特定の操作を説明します。
1.インストールlibunwindのライブラリー
からhttp://download.savannah.gnu.org/releases/libunwindここからダウンロード適切なダウンロードlibunwindのバージョンは、次のようにlibunwindの-150-alpha.tar.gzは、インストールプロセスは次のとおりです。
1 [ルート@ localhostのホーム]#タール zxvf libunwind- 150 -alpha。タール.gzを 2 [ルート@ localhostのホーム] libunwind-ます。#cd 150 -alpha / 3 [libunwind-ルート@ localhostの150 -alpha]#CFLAGS = -fPIC ./ 設定 4 [libunwind-ルート@ localhostと150#-alpha]を作ります CFLAGS = - FPIC 5 [libunwind-ルート@ localhostの150位-alpha] 作る CFLAGS = -fPIC インストール
2.インストールグーグル-perftools
http://google-perftools.googlecode.comここからダウンロード適切でダウンロードGoogle-perftoolsバージョンのGoogle-perftools-1.8.tar.gzで、次のように、インストールプロセスは次のとおりです。
1 [ルート@ localhostのホーム]#のタールは、グーグル-perftools- zxvf 1.8。タール.gzを 2 [ルート@ localhostのホーム]グーグル、perftools- #cd 1.8 / 3 [ルート@ localhostのグーグル-perftools- 1.8 ]#./ 設定 4 [ルート@ localhostのグーグル-perftools- 1.8 ]#を作る && 作る インストール 5 [ルート@ localhostのグーグル-perftools- 1.8 ]#のエコー " は/ usr / local / libに" >の/ etc / LD .so.conf.d / usr_local_lib.conf 6[ルート@ localhostのグーグル-perftools- 1.8 ]#ldconfigを
これまでのところ、Googleの-perftoolsのインストールは完了です。
3.再コンパイルnginxのの
nginxのサポートグーグル-perftoolsを作るため、nginxのを再コンパイルするために、「-with-google_perftools_module」オプションインストールプロセス中に追加する必要が、以下のようにインストールコードは次のとおりです。
1 [ルート@はlocalhostnginx- 0.7。65。]#/ 設定\ 2 > -と- google_perftools_module --with-http_stub_status_module --prefix = / OPT / nginxの 3 [ルート@ localhostのnginx- 0.7。65 ]位する 4 [ルート@ localhostのnginx- 0.7。65 ]#を作る インストール
ここでnginxのインストールは完了です。
4. Googleの-perftoolsディレクトリスレッドを追加し
、次のように/ tmp / tcmalloc内のファイルは、操作があるスレッドのディレクトリを作成します:
1 [ルート@ localhostのホーム]#ます。mkdir / tmpに/ tcmalloc 2 [ルート@ localhostのホーム]#1 のchmod 0777 / tmpに/ tcmalloc
5.メインの設定ファイルを変更しますnginxの
変更したファイルNginx.conf、このラインpidの下に次のコードを追加します。
1つの #pidログ/ nginx.pid。 2 google_perftools_profiles / TMP / tcmalloc。
その後、nginxのを再起動するために、Googleの-perftoolsのロードが完了しました。
6.運転状態を確認し
、次のコマンドを参照してください、Googleの-perftoolsを検証するためには、正常にロードされています:
1 [ルート@ localhostのホーム]#のlsof -n | grepのtcmalloc 2 nginxの 2395誰もいない9 wの REG 8、8 0 1599440 / TMP / tcmalloc。2395年 3 nginxの 2396誰もいない11 wの REG 8、8 0 1599443 / TMP / tcmalloc。2396年 4 nginxの 2397誰もいない13 wの REG 8、8 0 1599441 / TMP / tcmalloc。2397年 5 nginxの 2398誰15 wの REG 8、8 0 1599442 / tcmalloc / TMP。2398
nginxの設定ファイルので、値のセットは、このようにnginxの4つのスレッドを開く、4 worker_processes、それぞれが行を持っています。デジタルファイル値の背後にある各スレッドは、nginxのPID値の始まりです。
これまでのところ、nginxのの使用TCMallocの最適化作業は完了です。
三、nginxのカーネルパラメータ最適化
カーネルパラメータを最適化し、nginxのアプリケーションのためのLinuxシステムでは、主にシステムのカーネル・パラメータが最適化を実行し、次のように、一般的な最適化パラメータの値です。
以下の実施例は、最適化基準のために与えられます。
1 net.ipv4.tcp_max_tw_buckets = 65535 2のnet.ipv4.ip_local_port_range = 1024 65000 3 net.ipv4.tcp_tw_recycle = 1 4 net.ipv4.tcp_tw_reuse = 1 5 net.ipv4.tcp_syncookies = 1 6 net.core.somaxconn = 262144 7 net.core.netdev_max_backlog = 262144 8 net.ipv4.tcp_max_orphans = 262144 9 net.ipv4.tcp_max_syn_backlog = 262144 10 net.ipv4.tcp_synack_retries = 1 11 net.ipv4.tcp_syn_retries = 1 12net.ipv4.tcp_fin_timeout = 1 13 net.ipv4.tcp_keepalive_time = 30
次に加え/etc/sysctl.confファイル上記カーネル・パラメータの値は、以下のように有効にするようにコマンドを実行します。
[ルート@ localhostのホーム]#/ sbinに/ sysctlを-p
次のように導入されているオプションの意味の例です。
TIMEWAITを設定するために使用されるパラメータの数は、デフォルトではこれは65535に設定されている18万です。
net.ipv4.tcp_max_tw_buckets
オプションは、システムがオープンポート範囲を設定することができます。
のnet.ipv4.ip_local_port_range
オプションはTIMEWAIT迅速な復旧を可能にするために使用されています。
net.ipv4.tcp_tw_recycle
オープンリユースTIME-WAITソケットを設定するためのオプションは、新しいTCP接続の再使用が可能。
net.ipv4.tcp_tw_reuse
オープンSYNクッキーを設定するためのオプションは、SYNキューのオーバーフローが発生した場合、処理のためにクッキーを有効にします。
net.ipv4.tcp_syncookies
オプション128は、このパラメータを同時に開始、高度に並行要求を、TCP接続システムの数を調整するために使用され、リンクのデフォルト値は、タイムアウトまたは再送信をもたらすことができる、デフォルト値であるため、値を調整する同時リクエストの数の組み合わせを必要とします。
net.core.somaxconn
オプションでは、コア処理がキューに送信されるデータパケットの最大数を可能にするよりも、各ネットワーク・インタフェースは、これらのパケットレートのパケットを受信するために速い速度を表します。
net.core.netdev_max_backlog
オプションは、どのユーザファイルハンドルにリンクされていないTCPソケットの数まで、システムを設定するために使用されます。この数を超えた場合は、孤立した接続がすぐにリセットされ、警告メッセージをプリントアウトです。この制限は単純なDoS攻撃を防ぐために。過度に依存しないこの制限は人為的状況は、この値を大きくすることで、さらに、この値を減らします。
net.ipv4.tcp_max_orphans
クライアントがまだ最大接続情報要求の確認を受信していないことを記録するためのオプション。システムメモリ128MBのため、このパラメータのデフォルト値が1024であり、小さなメモリシステムは128です。
net.ipv4.tcp_max_syn_backlog
パラメータの値は、SYN + ACKパケットの送信を接続する前に中止されたコアの数を決定します。
net.ipv4.tcp_synack_retries
オプションは、接続する前に送信されたSYNパケットのカーネルのビルド番号をあきらめることを意味します。
net.ipv4.tcp_syn_retries
オプションでは、ソケットは、FIN-WAIT-2状態の時に留まる判定する。デフォルトは60秒です。非常に重要であり、時には小さなWebサーバーの負荷この値が正しく設定され、メモリ不足に起因する死者ソケットの数が多いので、リスクが存在します。
net.ipv4.tcp_fin_timeout
有効にすると、キープアライブオプションは、キープアライブメッセージのTCP送信周波数を示しています。デフォルト値は(時間で)2です。
net.ipv4.tcp_keepalive_time