实验环境:

OS:Redhat 5.3 64bit

Mysql:mysql 5.5.29


上次就Tcmallo优化Mysql内存管理的安装配置写了一篇blog,那么这次就针对Tcmalloc优化Nginx的内存管理的安装配置也写下。

首先,和mysql一样我们需要先安装Tcmalloc,这个请参考上一篇blogTcmalloc优化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

如上,我们看到了8条记录,那是因为每个线程(work_processes的值)会有一行记录,每个线程文件后面的数字值就是启动的nginx的pid值。


以上,就是整个Tcmalloc优化Nginx内存管理的安装配置了。