Tcmalloc最適化Nginxメモリ管理


実験環境:
OS:Redhat 5.3 64bit
Mysql:mysql 5.5.29
前回はTcmallo最適化Mysqlメモリ管理のインストール構成についてblogを書きましたが、今回はTcmallo最適化Nginxのメモリ管理のインストール構成についても書きます.
まず、mysqlと同様にTcmallocをインストールする必要があります.これは前のblog「Tcmalloc最適化Mysqlメモリ管理」を参照してください.ここでは説明しません.
次に、Nginxのインストールについて説明します.
# ./configure --prefix=/app/soft/nginx-download --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_random_index_module --with-http_perl_module --with-http_addition_module --with-pcre=../pcre-8.31 --with-zlib=../zlib-1.2.8 --add-module=../ngx_cache_purge-1.6 --add-module=../echo-nginx-module-0.44 --add-module=../ngx_devel_kit-0.2.18 --add-module=../lua-nginx-module-0.7.18 --add-module=../nginx_upstream_check_module-master --with-google_perftools_module
# make
# make install

NginxがTcmallocをサポートするには、インストール中に--with-google_を追加する必要があります.perftools_module、他は同じです.インストールが完了したら、構成ドキュメントに対応する構成が必要です.そうしないと、NginxはデフォルトでTcmallocを有効にしません.具体的な構成は次のとおりです.
# mkdir /tmp/tcmalloc
# chown -R www.www /tmp/tcmalloc
# vim nginx.conf
···
pid        logs/nginx.pid;
google_perftools_profiles /tmp/tcmalloc/;
···

以上のように、NginxがTcmallocを使用してメモリ管理の最適化を行うインストール構成が完了しました.NginxがTcmallocのコマンドを使用するかどうかを確認します.
[root@szmlvm29-79 tmp]# lsof |grep tcmalloc
nginx     14578    nobody   25w      REG              253,0        0    5925239 /tmp/tcmalloc/.14578
nginx     14579    nobody   27w      REG              253,0        0    5925240 /tmp/tcmalloc/.14579
nginx     14580    nobody   29w      REG              253,0        0    5925241 /tmp/tcmalloc/.14580
nginx     14581    nobody   31w      REG              253,0        0    5925242 /tmp/tcmalloc/.14581
nginx     14582    nobody   33w      REG              253,0        0    5925243 /tmp/tcmalloc/.14582
nginx     14583    nobody   35w      REG              253,0        0    5925244 /tmp/tcmalloc/.14583
nginx     14584    nobody   37w      REG              253,0        0    5925245 /tmp/tcmalloc/.14584
nginx     14585    nobody   39w      REG              253,0        0    5925246 /tmp/tcmalloc/.14585

このように、各スレッド(work_processesの値)に1行のレコードがあり、各スレッドファイルの後ろの数値が起動したnginxのpid値であるため、8つのレコードが見られます.
以上、Tcmalloc全体でNginxメモリ管理のインストール構成を最適化しました.