由于FaceBook
而火起来的Jemalloc
广为人之,但殊不知,它在malloc
界里面很早就出名了。Jemalloc
的创始人 Jason Evans 也是在FreeBSD
很有名的开发人员。此人就在2006年为提高低性能的malloc
而写的Jemalloc
。Jemalloc
是从2007年开始以FreeBSD
标准引进来的。软件技术革新很多是FreeBSD
发起的。在FreeBSD
应用广泛的技术会慢慢导入到linux
。
Redis 2.4
版本之后,默认使用Jemalloc
来做内存管理;Tengine
也整合Jemalloc
。Jemalloc
从各方评测的结果可见与google tcmalloc
都不相伯仲,皆为内存管理器领域最高水平。如下图:
最左边的就是glibc
的malloc
,最右边的就是Jemalloc
。从图表上可以看出,Jemalloc
的性能有glibc
的两倍以上。非常压倒性的性能差异。因此,使用了Jemalloc
的应用程序自然会快很多。Jemalloc
旁边的就是tcmalloc
。Tcmalloc
的性能与其相差甚微,低Jemalloc 2.1.0
慢4.5%。图上和tcmalloc
的1.4版本,而现在已经到2.1版本,因此实际上这两者应该是不相仲伯的。Jemalloc
的创始人 jason evans 也意识到这一点,说在cpu core 8
以上的计算机上Jemalloc
效率更高。
LNMP
一键安装包里面已经集成了Jemalloc
,在首次安装LNMP
的时候就会提示是否安装和使用内存优化管理程序的。
如果安装LNMP时没有安装Jemalloc
的话,可以使用LNMP
的扩展安装脚本来安装,如下:
./addons.sh jemalloc
Redis默认就是使用Jemalloc的
如果安装Redis
的时候,LNMP
环境没有集成Jemalloc
的话,可以在安装完Jemalloc
后重新安装、编译一下Redis
即可自动重新编译加入Jemalloc
的支持了,如下命令:
./addons.sh redis
使用Jemalloc
优化MySQL
通过命令行修改mysqld_safe
来让当前的MySQL
来支持Jemalloc
,如下命令:
sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libjemalloc.so@' /usr/local/mysql/bin/mysqld_safe
service mysqld restart
使用Jemalloc
优化Nginx
LNMP下安装Jemalloc后,只需要重新编译一下Nginx即可,命令如下:
cd lnmp1.4
./upgrade.sh nginx
最后验证Jemalloc
是否已经生效并工作
用如下命令查看:
lsof -n | grep jemalloc
结果如下(类似即表明Jemalloc
已经生效了):
nginx 5398 root mem REG 8,1 2796824 152140 /usr/local/lib/libjemalloc.so.2
nginx 5401 newblog mem REG 8,1 2796824 152140 /usr/local/lib/libjemalloc.so.2
mysqld 6199 mysql mem REG 8,1 2796824 152140 /usr/local/lib/libjemalloc.so.2
mysqld 6199 6200 mysql mem REG 8,1 2796824 152140 /usr/local/lib/libjemalloc.so.2
mysqld 6199 6245 mysql mem REG 8,1 2796824 152140 /usr/local/lib/libjemalloc.so.2
mysqld 6199 6254 mysql mem REG 8,1 2796824 152140 /usr/local/lib/libjemalloc.so.2
mysqld 6199 6584 mysql mem REG 8,1 2796824 152140 /usr/local/lib/libjemalloc.so.2
mysqld 6199 6762 mysql mem REG 8,1 2796824 152140 /usr/local/lib/libjemalloc.so.2
mysqld 6199 6773 mysql mem REG 8,1 2796824 152140 /usr/local/lib/libjemalloc.so.2
mysqld 6199 6774 mysql mem REG 8,1 2796824 152140 /usr/local/lib/libjemalloc.so.2
9 条评论
很好啊,顶一下
大佬还有别的什么命令查看吗??
-bash: lsof: command not found
安装个lsof先吧!
为什么我执行了lsof -n | grep jemalloc
什么也不显示?
那说明你没有使用内存优化!
谢谢分享!!!!
多谢支持!欢迎常来哈!
过来支持一下先!
多谢支持!欢迎常来!