Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Percona Server 5.1 内存过量消耗分析1

Percona Server 5.1 内存过量消耗分析1

作者头像
franket
发布于 2022-07-09 15:43:20
发布于 2022-07-09 15:43:20
64400
代码可运行
举报
文章被收录于专栏:技术杂记技术杂记
运行总次数:0
代码可运行

分析问题

初步推断有两种情况:

  • 参数配置不当
  • 内存泄漏

关于参数配置不当,我分析完各种buffer,cache参数配置后没有发现异常或特别严重的错误,于是尝试从内存泄漏的角度来寻找突破口


分析工具

pmap : 用来生成一个进程的内存使用报表

The pmap command reports the memory map of a process or processes.

pt-config-diff : 用来比较Mysql 配置文件的差异

pt-config-diff diffs MySQL configuration files and server variables. CONFIG can be a filename or a DSN. At least two CONFIG sources must be given. Like standard Unix diff, there is no output if there are no differences.

使用 pmap 生成mysql内存使用报表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@abc ~]# pmap -x 14769 
14769:   /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/abc.err --open-files-limit=8192 --pid-file=/var/lib/mysql/abc.pid --socket=/var/lib/mysql/mysql.sock --port=3306
Address           Kbytes     RSS   Dirty Mode   Mapping
0000000000400000    7484    3704       0 r-x--  mysqld
0000000000d4e000     412     216     116 rw---  mysqld
0000000000db5000     112     108     108 rw---    [ anon ]
0000000000fb4000     516       4       0 rw---  mysqld
000000000adbf000 9286784 7807156 7807116 rw---    [ anon ]
00000035b3a00000     112     100       0 r-x--  ld-2.5.so
00000035b3c1c000       4       4       4 r----  ld-2.5.so
00000035b3c1d000       4       4       4 rw---  ld-2.5.so
00000035b3e00000    1340     528       0 r-x--  libc-2.5.so
00000035b3f4f000    2048       0       0 -----  libc-2.5.so
00000035b414f000      16      16       4 r----  libc-2.5.so
00000035b4153000       4       4       4 rw---  libc-2.5.so
...
...
00002ae84c000000   63804    2524    2524 rw---    [ anon ]
00002ae84fe4f000    1732       0       0 -----    [ anon ]
00002ae850000000   26976    2788    2788 rw---    [ anon ]
00002ae851a58000   38560       0       0 -----    [ anon ]
00007fffe4cbd000      84      16      16 rw---    [ stack ]
00007fffe4ce1000      12       4       0 r-x--    [ anon ]
ffffffffff600000    8192       0       0 -----    [ anon ]
----------------  ------  ------  ------
total kB        44114104 39346676 39341556

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Percona Server 5.1 内存过量消耗分析2
对这个报表作一个排序,会获得更多信息[root@abc ~]# pmap -x 14769 | sort -nk 2 ---------------- ------ ------ ------14769: /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/abc.err --open-files-limit=8192 --pid-file=/var/lib
franket
2022/07/09
5140
示例展示虚拟内存和物理内存的分配
通过前两篇文章(系统调用mmap的内核实现分析,Linux下Page Fault的处理流程)我们可以知道,虚拟内存是在我们向操作系统申请内存(比如malloc或mmap)时分配的,而物理内存是在我们使用(比如读或写)虚拟内存时通过page fault分配的。
KINGYT
2019/07/08
1.6K0
Linux 命令(145) —— pmap 命令
pmap(process memory map)命令用于查看进程的内存映射,即进程的内存地址空间。
恋喵大鲤鱼
2022/10/24
5K0
Linux进程内存分析pmap命令
名称:        pmap - report memory map of a process(查看进程的内存映像信息)pmap命令用于报告进程的内存映射关系,是Linux调试及运维一个很好的工具。 用法        pmap [ -x | -d ] [ -q ] pids...        pmap -V 选项含义        -x   extended       Show the extended format. 显示扩展格式        -d   device         Show the device format.   显示设备格式        -q   quiet          Do not display some header/footer lines. 不显示头尾行        -V   show version   Displays version of program. 显示版本 扩展格式和设备格式域:         Address:  start address of map  映像起始地址         Kbytes:  size of map in kilobytes  映像大小         RSS:  resident set size in kilobytes  驻留集大小         Dirty:  dirty pages (both shared and private) in kilobytes  脏页大小         Mode:  permissions on map 映像权限: r=read, w=write, x=execute, s=shared, p=private (copy on write)           Mapping:  file backing the map , or '[ anon ]' for allocated memory, or '[ stack ]' for the program stack.  映像支持文件,[anon]为已分配内存 [stack]为程序堆栈         Offset:  offset into the file  文件偏移         Device:  device name (major:minor)  设备名 举例: 查看进程1的设备格式 [root@C44 ~]#  pmap -d 1 1:   init [5]                     Address   Kbytes Mode  Offset           Device    Mapping 00934000      88 r-x-- 0000000000000000 008:00005 ld-2.3.4.so 0094a000       4 r---- 0000000000015000 008:00005 ld-2.3.4.so 0094b000       4 rw--- 0000000000016000 008:00005 ld-2.3.4.so 0094e000    1188 r-x-- 0000000000000000 008:00005 libc-2.3.4.so 00a77000       8 r---- 0000000000129000 008:00005 libc-2.3.4.so 00a79000       8 rw--- 000000000012b000 008:00005 libc-2.3.4.so 00a7b000       8 rw--- 0000000000a7b000 000:00000   [ anon ] 00a85000      52 r-x-- 0000000000000000 008:00005 libsepol.so.1 00a92000       4 rw--- 000000000000c000 008:00005 libsepol.so.1 00a93000      32 rw--- 0000000000a93000 000:00000   [ anon ] 00d9d000      52 r-x-- 0000000000000000 008:00005 libselinux.so.1 00daa000       4 rw--- 000000000000d000 008:00005 libselinux.so.1 08048000      28 r-x-- 0000000000000000 008:00005 init 0804f000       4 rw--- 0000000000007000 008:00005 init 084e
菲宇
2022/12/21
4.2K0
系统调用mmap的内核实现分析
执行该程序,输出mmap方法返回的内存地址,同时使用pmap命令输出该程序执行mmap之前以及之后的内存使用情况。
KINGYT
2019/07/08
2.8K0
全志平台Tina系统内存调试的方法(valgrind、pmap、手工释放内存)
valgrind是个开源的工具,可以用来检查内存泄露等,全志平台上有移植,官网地址:
阿志小管家
2024/02/02
2030
[PHP] pmap可以查看进程占用内存的详细情况
while true;do clear;date;for i in `ps --no-headers -o "pid" -C php-fpm`;do pmap $i|tail -1;done;sleep 1;done
唯一Chat
2019/12/02
2K0
Linux常用命令--系统状态篇
Linux常用命令中,有些命令可以用于查看系统的状态,通过了解系统当前的状态,能够帮助我们更好地维护系统或定位问题。本文就简单介绍一下这些命令。
编程珠玑
2019/09/03
1.1K0
如何查看Linux系统的状态信息?
Linux常用命令中,有些命令可以用于查看系统的状态,通过了解系统当前的状态,能够帮助我们更好地维护系统或定位问题。本文就简单介绍一下这些命令。
编程珠玑
2019/07/30
7.8K0
操作系统原理:How Linux Works(三):Memory
内存是计算机中与CPU进行沟通的桥梁,用于暂时存放CPU中的运算数据。Linux 内核的内存管理机制设计得非常精妙,对于 Linux 内核的性能有很大影响。在早期的 Unix 系统中,fork 启动新进程时,由于从父进程往子进程复制内存信息需要消耗一定的时间,因此启动多个进程时存在性能瓶颈。现在的 Linux 内核则通过“写时复制(copy-on-write)”等机制提高了创建进程的效率;也正是因为这个原因,关于 Linux 内存分配、计算、空闲判断有一些特别的地方需要注意。
RiboseYim
2018/01/12
2.1K0
Linux Used内存到底哪里去了?
这个问题不止一个同学遇到过了,之前小王同学也遇到这个问题,内存的计算总是一个迷糊账。我们今天来把它算个清楚下!
民工哥
2020/09/15
3.4K0
Linux Used内存到底哪里去了?
谁来接NMT(Native Memory Tracking)内存故障诊断的下一个棒
前面的文章中说道NTM可以追踪到堆内内存、code区域、通过unsafe.allocateMemory和DirectByteBuffer申请的内存。
Criss@陈磊
2019/08/02
7630
全民K歌内存篇2——虚拟内存浅析
《全民K歌内存篇1——线上监控与综合治理》 《全民K歌内存篇2——虚拟内存浅析》 《全民K歌内存篇3——native内存分析与监控》 一、简介 在多任务操作系统中,每个进程都拥有独立的虚拟地址空间,通过虚拟地址进行内存访问主要具备以下几点优势: 进程可使用连续的地址空间来访问不连续的物理内存,内存管理方面得到了简化。 实现进程与物理内存的隔离,对各个进程的内存数据起到了保护的作用。 程序可使用远大于可用物理内存的地址空间,虚拟地址在读写前不占用实际的物理内存,并为内存与磁盘的交换提供了便利。 Androi
QQ音乐技术团队
2021/03/04
4.1K0
在终端监控你的 Linux 系统 | Linux 中国
在 POSIX 术语中, 进程(process)是一个正在进行的事件,由操作系统的内核管理。当你启动一个应用时就会产生一个进程,尽管还有许多其他的进程在你的计算机后台运行,包括保持系统时间准确的程序、监测新的文件系统、索引文件,等等。
用户8639654
2021/09/03
1.8K0
使用Perf诊断PostgreSQL性能问题
但偏向于debug的参数会造成性能降低,生产上也不一定这样编,部分堆栈缺失也不妨碍整体性能分析。
mingjie
2024/04/25
3421
使用Perf诊断PostgreSQL性能问题
Linux 下找出吃内存的方法总结
linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」。现在想要查询该进程占用的内存大小。linux命令行下有很多的工具进行查看,现总结常见的几种方式。
杰哥的IT之旅
2021/04/20
1.3K0
Percona Server 5.1 内存过量消耗分析6
由于它并不能动态进行调整,所以必须安排一次数据库的启停,在配置文件中对 innodb_ibuf_max_size 进行限定就可以有效解决此问题
franket
2022/07/09
6300
docker cgroup 技术之memory(首篇)
内核使用cgroup对进程进行分组,并限制进程资源和对进程进行跟踪。内核通过名为cgroupfs类型的虚拟文件系统来提供cgroup功能接口。cgroup有如下2个概念:
charlieroro
2020/03/24
1.7K0
docker cgroup 技术之memory(首篇)
一次完整的JVM堆外内存泄漏故障排查记录
记录一次线上JVM堆外内存泄漏问题的排查过程与思路,其中夹带一些「JVM内存分配的原理分析」以及「常用的JVM问题排查手段和工具分享」,希望对大家有所帮助。
Rude3Knife的公众号
2020/08/28
3.8K0
一次完整的JVM堆外内存泄漏故障排查记录
JAVA 应用线上故障排查手册
线上故障主要会包括 CPU、磁盘、内存(含JVM)以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。 基本上出问题就是 df、free、top、jstack、jmap具体问题具体分析
IT运维技术圈
2022/10/24
7020
相关推荐
Percona Server 5.1 内存过量消耗分析2
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验