一:jemalloc 简介

jemalloc 强调了碎片避免和可扩展的并发支持。jemalloc于2005年首次作为FreeBSD libc分配器使用,从那以后它已经进入许多依赖于其可预测行为的应用程序。jemalloc适合多线程下内存分配管理,jemalloc从各方评测的结果可见与google tcmalloc都不相伯仲,皆为内存管理器领域最高水平。有时候,我们想采用Jemalloc来替代glibc库的malloc内存管理方式,或者如果想启用TokuDB引擎,则就必须启用Jemalloc才行了。

二:安装 jemalloc

1. yum 安装 jemalloc
1) 安装
yum install jemalloc -yyum install tcmalloc -y2) 生效 LD_PRELOAD 环境变量
source /usr/bin/jemalloc.sh
env|grep LD_PRELOAD2. 编译安装 jemalloc
1) 下载安装包
wget https://github.com/jemalloc/jemalloc/releases/download/5.1.0/jemalloc-5.1.0.tar.bz22)解压编译安装
tar jxvf jemalloc-5.1.0.tar.bz2
cd jemalloc-5.1.0
./configure --prefix=/usr
make && make install##注意这里要指定编译路径,否则mysql启动的时候会报如下错误
mysqld_safe --malloc-lib must be located in one of the directories: /usr/lib /usr/lib64 /usr/lib/i386-linux-gnu /usr/lib/x86_64-linux-gnu##反向操作
make uninstall && make clean
make -f dc_debug.mak clean

三:启动MySQL如何加载 Jemalloc

1. 通过指定 LD_PRELOAD 环境变量加载 jemalloc
1) 切换到 mysql 用户
su - mysql
2) 设置 LD_PRELOAD 环境变量
export LD_PRELOAD=/usr/lib64/libjemalloc.so.1
env|grep LD_PRELOAD
#LD_PRELOAD是个环境变量,用于动态库的加载,动态库加载的优先级最高。一般情况下,其加载顺序为:LD_PRELOAD>LD_LIBRARY_PATH => /etc/ld.so.cache => /lib => /usr/lib
3) mysqld 直接启动数据库
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf &
或者
msyqld_safe --defaults-file=/etc/my.cnf &
4)确认 mysqld 是否加载了 jemalloc
lsof -p `pidof mysqld` | grep -i jemalloc
mysqld  8041 mysql  mem    REG              253,1    212096 51708144 /usr/lib64/libjemalloc.so.1
#命令有如上输出时表示加载成功2. 通过在配置文件中指定 malloc-lib 参数加载 jemalloc
1) 配置文件中指定 malloc-lib 参数
vi /etc/my.cnf
[mysqld_safe]
malloc-lib = /usr/lib64/libjemalloc.so.1#详细信息可以参考 https://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html#option_mysqld_safe_malloc-lib2) 通过 mysqld_safe 启动数据库
mysqld_safe --defaults-file=/etc/my.cnf &3)检查 jemalloc 是否加载成功
lsof -p `pidof mysqld` | grep -i jemalloc

MySQL 通过 jemalloc 管理内存相关推荐

  1. MySQL 通过Tcmalloc管理内存

    一: Tcmalloc 安装 1. libunwind 安装 #如果你是在 64 位系统安装 Tcmalloc ,强烈建议先安装 libunwind,详细原因请见: https://github.co ...

  2. MySQL • 源码分析 • 内存分配机制

    摘要: 前言 内存资源由操作系统管理,分配与回收操作可能会执行系统调用(以 malloc 算法为例,较大的内存空间分配接口是 mmap, 而较小的空间 free 之后并不归还给操作系统 ),频繁的系统 ...

  3. MySQL数据库的管理工具

    1 MySQL的命令行工具 在数据库启动状态时,如果我们想关闭数据库,我们可以输入: net stop mysql8,这样可以关闭数据库,如下图所示: 数据库关闭以后,我们如果想启动数据库,可以输入: ...

  4. 内存管理-内存池的实现

    内存池的实现 1 前言 2 内存池的原理 2.1 内存利用链表进行管理 2.2 分配固定大小 2.3 按块进行内存管理 3 内存池的实现 3.1 内存池的创建 3.2 内存池的销毁 3.3 内存分配 ...

  5. MySQL之账号管理.建库以及四大引擎

    目录 1.mysql简介 2.MySQL安装 安装MySQL(8.0的版本) 安装MySQL(5.7的版本) 删除MySQL(这是5.5版本的卸载方式) 3.命令行登陆及权限修改 4.MySQL默认四 ...

  6. MySQL之账号管理、建库、四大引擎以及数据类型、建表、约束

    目录 一.MySQL简介 MySQL是什么? 术语 二.MySQL安装 三.MySQL默认数据库里面的四张表 四.mysql之账号管理.建库以及四大引擎 五.MySQL之数据类型.建表以及约束 六.案 ...

  7. MySQL之权限管理

    MySQL之权限管理 一.MySQL权限简介 关于mysql的权限简单的理解就是mysql允许你做你全力以内的事情,不可以越界.比如只允许你执行select操作,那么你就不能执行update操作.只允 ...

  8. gearman mysql_Gearman Server 使用 MySQL UDFs 来管理和保持队列

    我们知道 Gearman 的任务是一个数组结构,只存在内存中,一断电怎么样这个信息就会不存在.所以新的 gearman 开发了一个功能,就是通过 mysql 来存储任务信息.这样可以持久的保持任务的状 ...

  9. mysql二进制日志管理_MYSQL二进制日志管理脚本

    MYSQL二进制日志管理脚本脚本原理是每小时对进行flush生成新的二进制日志,将二进制日志备份至NFS,并压缩存放:#!/bin/bash#Purpose:管理二进制日志,每小时刷新二进制日志,并将 ...

  10. 在请求分页虚存管理系统中_请求分页式系统中,以页为单位管理用户的虚空间,以段为单位管理内存空间_学小易找答案...

    [简答题]OS作为接口,通过哪几种方式实现? [简答题]并发与并行有什么区别? [判断题]请求分页式系统中,以页为单位管理用户的虚空间,以段为单位管理内存空间 [简答题]微内核是否是完整的OS? [单 ...

最新文章

  1. OpenShift — 架构设计
  2. 容器开启数据服务之旅系列(一):Kubernetes如何解自建PostgreSQL运维之痛
  3. ID--HANDLE--HWND三者之间的互相转换(转)
  4. 是什么引起数据中心机房事故频发,是天灾还是人祸?
  5. C#中将list进行序列化并使用SharpZipLib进行压缩
  6. 63. Unique Paths II 不同路径 II
  7. php删除框架集,delete 删除-Medoo - 高效的轻量级PHP数据库框架, 提高开发效率!
  8. java comparator_Java基础之String漫谈(二)
  9. 带负荷测试要求二次最小电流_电流回路基础知识(15):带负荷测试
  10. 实用Python之字符串长度计算
  11. 一篇不错的讲解Java异常的文章(转载)----感觉很不错,读了以后很有启发
  12. Apache mod_rewrite
  13. matlab2c使用c++实现matlab函数系列教程- polyval函数
  14. mac10.12 安装“任何来源”软件解决
  15. 阿里云服务器被恶意程序攻击
  16. linux网卡流量查询sar,Linux 查看实时网卡流量的方法 sar nload iftop
  17. 多行文本溢出隐藏省略号
  18. 软件:股票小助手/盯盘小助手!
  19. Springboot项目启动后自动在浏览器打开
  20. 网页转换成电脑exe软件简单办法

热门文章

  1. 带蒙版的安卓剪辑软件_手机上有哪些好用的视频剪辑 App?
  2. 计算机vfp知识要点,计算机二级考试VFP知识点:VisualFoxPro基础
  3. 使用python控制其他软件运行_Python实现运行其他程序的四种方式实例分析
  4. HTML5制作对联网页,经典的JS对联广告代码
  5. java struts2教程_Struts2教程
  6. 解答篇:金蝶K3wise截取活动窗口
  7. 什么是SOCKS5协议
  8. android采集声卡,农步祥作品 - Android系统下使用USB声卡音质测评报告 [Soomal]
  9. Keysight WIFI6测试培训笔记
  10. Chromium OS Autotest 概述