Tcmalloc对Mysql及Nginx内存管理优化

TcMalloc内存分配器,能提升高并发下的性能,降低系统的负载。能降低多线程程序之间的锁争用问题,在小对象上可以达到最小争用。

Linux下tcmalloc安装

  1. 1

    安装Tcmalloc

    # wget http://gperftools.googlecode.com/files/gperftools-2.1.tar.gz

    # cd gperftools-2.1

    # ./configure

    # make && make install 

    默认路径为/usr/local,Tcmalloc库安装在/usr/local/lib目录

  2. 2

    TCmaloc库加载到Linux系统中:

    # echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf

    # /sbin/ldconfig

    END

tcmalloc优化mysql

  1. 1

    修改MySQL启动脚本(依据MySQL安装位置):

    vi /usr/local/mysql/bin/mysqld_safe

    在# executing mysqld_safe的下一行,添加:

    export LD_PRELOAD=/usr/local/lib/libtcmalloc.so

    保存退出,并重启MySQL。

  2. 2

    依据lsof验证命令查看tcmalloc是否起效

    # lsof |grep -i libtcmalloc.so

    如果发现以下信息,说明tcmalloc已经起效:

    mysqld  13961   mysql  mem    REG  253,0  1948990     196421/usr/local/lib/libtcmalloc.so.4.1.2

    END

Tcmalloc优化Nginx

  1. Nginx安装过程中添加"–with-google_perftools_module"

    cd lnmp/src/nginx-1.5.10 make clean ./configure --prefix=/usr/local/nginx --user=www --group=www \ --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module \ --with-http_gzip_static_module --with-google_perftools_module make && make install

  2. 添加线程目录,具体如下:

    # mkdir /tmp/tcmalloc

    # chown -R www.www /tmp/tcmalloc

    # vim nginx.conf

    ···

    pid        logs/nginx.pid;

    google_perftools_profiles /tmp/tcmalloc/;

    ···

  3. 3

    验证tcmalloc是否生效

    lsof -n | grep tcmalloc

    每个线程(work_processes的值)会有一行记录,每个线程文件后面的数字值就是启动的nginx的pid值。


你可能感兴趣的:(Tcmalloc对Mysql及Nginx内存管理优化)