1. jemalloc是干什么的呢?
官方说明:
jemalloc is a general purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.
jemalloc干了malloc干的活,而且干得好一些,主要体现在避免内存碎片与并发扩展上
2. jemalloc安装
1 | wget https://github.com/jemalloc/jemalloc/releases/download/4.4.0/jemalloc-4.4.0.tar.bz2 |
1 | echo '/usr/local/webserver/jemalloc/lib' > /etc/ld.so.conf.d/local.conf |
3. 使用jemalloc优化Nginx
编译NGINX时添加以下参数:
–with-ld-opt=/usr/local/webserver/jemalloc/lib/libjemalloc.so.2
具体实现:1
2
3
4
5cd nginx-1.12.1
make clean
./configure --prefix=/usr/local/webserver/nginx
--with-ld-opt="/usr/local/webserver/jemalloc/lib/libjemalloc.so.2"
make && make install
4. 使用jemalloc优化MySQL
方法1.
MySQL/MaridDB 5.5编译方法,cmake预编译时加上下面参数1
2-DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" -DWITH_SAFEMALLOC=OFF
load_jemalloc=1
方法2.
修改mysqld_safe直接加载:
查找文件 /usr/local/mysql/bin/mysqld_safe
在#executing mysqld_safe 下面加上1
mysqld_ld_preload=/usr/local/webserver/jemalloc/lib/libjemalloc.so #Percona Mysql
重新启动MYSQL1
systemctl restart mysql
使用下面代码自动修改mysqld_safe文件1
2sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/webserver/jemalloc/lib/libjemalloc.so@' /usr/local/webserver/mysql/bin/mysqld_safe
load_jemalloc=1
5. 验证 jemalloc 是否运行
1 | lsof -n | grep jemalloc |