Debian 使用 Jemalloc 优化 Nginx 和 MySQL

Install jemalloc From APT

apt install libjemalloc2 libjemalloc-dev

Nginx 需要编译时加入--with-ld-opt=-ljemalloc

./configure --with-ld-opt='-ljemalloc'

MySQL 需要根据启动方式的不同,修改 systemd 文件 / init.d文件

  • Systemd 服务启动 要修改 /usr/lib/systemd/system/mysqld.service 文件,加入
# 对于 X86_64 CPU
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2

# 对于 ARM64 CPU
LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libjemalloc.so.2
  • init.d 服务启动 则需要修改 /etc/init.d/mysqld 文件 (宝塔 / aapanel)
# 对于 X86_64 CPU
sed -i 's|  $bindir/mysqld_safe --d|  LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2 $bindir/mysqld_safe --d|g' /etc/init.d/mysqld

# 对于 ARM64 CPU
sed -i 's|  $bindir/mysqld_safe --d|  LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libjemalloc.so.2 $bindir/mysqld_safe --d|g' /etc/init.d/mysqld

更新系统服务

systemctl daemon-reload

当然也可以 Build from souce 以使用最新的版本

⚠️注意 编译默认安装位置在 /usr/local/lib/libjemalloc.so.2 使用时要修改位置

wget https://github.com/jemalloc/jemalloc/releases/download/5.3.0/jemalloc-5.3.0.tar.bz2
tar -xvf jemalloc-5.3.0.tar.bz2 && cd jemalloc-5.3.0
./configure && make && make install
echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
ldconfig

Leave a Comment