首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

TCMalloc优化MySQL、Nginx、Redis内存储器管理

2013-11-06 
TCMalloc优化MySQL、Nginx、Redis内存管理采用动态加载sed -i s@executing mysqld_safe@executing mysqld_s

TCMalloc优化MySQL、Nginx、Redis内存管理

采用动态加载

sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' /usr/local/mysql/bin/mysqld_safeservice mysqld restart

验证加载tcmalloc在MySQL中是否生效,如下:

lsof -n | grep tcmalloc

使用TCMalloc优化Nginx?
为了使nginx支持google-perftools,需要在安装过程中添加"--with-google_perftools_module"选项重新编译nginx。安装如下:

cd lnmp/src/nginx-1.4.2make 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_modulemake && make install

为添加线程目录:

mkdir /tmp/tcmallocchown -R www.www /tmp/tcmallocvi /usr/local/nginx/conf/nginx.conf #pid下一行添加google_perftools_profiles /tmp/tcmalloc;

验证tcmalloc是否在Nginx中生效

lsof -n | grep tcmalloc

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

使用TCMalloc优?化redis?
注意:redis-2.4以上自带jemalloc?,你不需要加任何参数, 通过zmalloc.c源码中我们可以看到,Redis在编译时,会先判断是否使用tcmalloc,如果是,会用tcmalloc对应的函数替换掉标准 的libc中的函数实现。其次会判断jemalloc是否使得,最后如果都没有使用才会用标准的libc中的内存管理函数。所以用tcmalloc优化请 谨慎使用,这两着分配器碎片率相差不大,建议用自带jemalloc?

cd lnmp/src/redis-2.6.16make USE_TCMALLOC=yes FORCE_LIBC_MALLOC=yes/bin/cp src/{redis-benchmark,redis-check-aof,redis-check-dump,redis-cli,redis-sentinel,redis-server} /usr/local/redis/bin

热点排行