问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何优化因 MYSQL 读写频繁,负载过高导致的CPU高占用率

发布网友 发布时间:2022-04-23 00:52

我来回答

2个回答

热心网友 时间:2022-04-07 21:35

诊断思路

mpstat -P ALL 1,查看cpu使用情况,主要消耗在sys即os系统调用上

perf top,cpu主要消耗在_spin_lock

生成perf report查看详细情况

CPU主要消耗在mutex争用上,说明有锁热点。

采用pt-pmp跟踪mysqld执行情况,热点主要集中在mem_heap_alloc和mem_heap_free上。

Pstack提供更详细的API调用栈

Innodb在读取数据记录时的API路径为

row_search_for_mysql --》row_vers_build_for_consistent_read --》mem_heap_create_block_func --》mem_area_alloc --》malloc --》  _L_unlock_10151 --》__lll_unlock_wait_private

row_vers_build_for_consistent_read会陷入一个死循环,跳出条件是该条记录不需要快照读或者已经从undo中找出对应的快照版本,每次循环都会调用mem_heap_alloc/free。

而该表的记录更改很频繁,导致其undo history list比较长,搜索快照版本的代价更大,就会频繁的申请和释放堆内存。

Linux原生的内存库函数为ptmalloc,malloc/free调用过多时很容易产生锁热点。

当多条 SQL 并发执行时,会最终触发os层面的spinlock,导致上述情形。


解决方案

将mysqld的内存库函数替换成tcmalloc,相比ptmalloc,tcmalloc可以更好的支持高并发调用。

修改my.cnf,添加如下参数并重启

[mysqld_safe]malloc-lib=tcmalloc

上周五早上7点执行的操作,到现在超过72小时,期间该实例没有再出现cpu长期飙高的情形。

以下是修改前后cpu使用率对比

热心网友 时间:2022-04-07 22:53

不要用SQL,用一般的查询语句即可。
查询对象是用来操作数据库中的记录对象。利用它可以按照一定的条件或准则从几个表中筛选出需要操作的字段,并可以把它们集中起来,形成动态数据集。用户可以浏览、查询、打印、甚至修改这个动态数据集中的数据。
通过查询,可以查找和检索满足指定条件的数据,包括几个表中的数据。也可以使用查询同时更新或删除几个记录,以及对数据执行预定义或自定义的计算。
使用查询可以回答有关数据的特定问题,而这些问题通过直接查看表数据很难解决。可以使用查询筛选数据,执行数据计算和汇总数据,还可以使用查询自动执行许多数据管理任务,并在提交数据更改之前查看这些更改。
查询是对数据结果、数据操作或者这两者的请求。可以使用查询回答简单问题,执行计算、合并不同表中的数据,甚至添加、更改或删除表数据。用于从表中检索数据或进行计算的查询叫做选择查询,用于添加、更改或删除数据的查询叫做操作查询。
ž还可以使用查询为窗体或报表提供数据。在设计良好的数据库中,要使用窗体或报表显示的数据通常位于几个不同的表中,通过使用查询,可以在设计窗体或报表之前组合要使用的数据。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...爱你你是我的罗密欧 , 我愿意变成你的朱丽叶' 谁知 有句歌词是“我爱你你是我的朱丽叶,我愿意变成你的梁山伯”是哪... 为什么打印出来的文档页码和原来的不一样 ...两台电脑用路由器上网一台是W7一台是XP如何实现两台电脑共享文件 win7怎么联另一台电脑win7怎么让网络和另一台电脑共享 w7的系统怎么共享电脑w7系统里面文件怎么共享另一台电脑 共享win7电脑w7系统里面文件怎么共享另一台电脑 翡翠有收藏价值吗,我们玩家如何去投资 价格一两万元的翡翠如何挑选 ppt怎么转换成视频?简单四步法,轻松搞定ppt微课录制 Mysqld.exe占CPU100%的问题 mysql数据库服务器CPU负载超过200%,mysqld进程导致的,如何解决?_百度知... navicat for mysql 导入sql大文件报out of memory 错误,怎么解决?_百... mysqld.exe占用CPU达到100%怎么办呀?这是什么原因造成的呢?_百度知 ... mysql数据库导致cpu100%? 安装完mysql后进行配置时,CPU占用资源100%而无法响应。 mysql的cpu占用达到100%;show processlist命令查看 会出现1000多个lock... mysql 服务器CPU占用过高,如何调优,求助 Mysql占用CPU达100%,怎么解决!! - PHP进阶讨论 MySQL CPU占用过高怎么办 cpu占用100%,主要是mysql占用过高,请问要怎么解决 mysql cpu占用100%占满怎么解决 mysql经常占用cpu100%以上,该怎么解决 九宫格的计算口诀是什么? 九宫格什么意思 九宫格的八种解法 九宫格口诀是什么意思? 什么是九宫图? “九宫格”是什么意思? 如何破解九宫格? mysqld占用CPU过高是什么原因 我的电脑桌面突然间一片空白了,任务栏也显示不了怎么办? 服务器mysqld.exe进程,占用CPU100%高居不下,请大神帮助!!! 电脑桌面空白怎么恢复,右键动不了,任务栏也没有了,就是一片空白,什么东西都没有_百度问一问 阿里云cpu检测进程mysql太高怎么解决 电脑桌面下方的任务栏全没有了?怎么回事? mysql什么能够影响数据库服务占用cpu使用率过多 win11为什么电脑下面的任务栏左边空了一大块? 怎么去掉WPS表格的公式、保存数字! navicat for mysql 导入.sql 大文件 报out of memory 错误,怎么解决... 我的电脑开启后,有桌面,但是没有图标和任务栏,一片空白,这是怎么回事,我该怎么弄? WPS工作表格如何去掉公式,保留值 我启动电脑后桌面是空,任务栏和桌面图标全都没有... 电脑桌面全部变成空白的 没有图标也没任务栏怎么办 wps怎样删除水印和公章 我的电脑桌面上一下子什么也没有了,包括任务栏一切都没有了,只是一片空白,请问到底是怎么回事啊? wps引用后,去除公式, 电脑桌面下方什么都没有了,任务栏没有了怎么办? 公章覆盖很多字怎么用WPS去除? 我的电脑桌面一片空白!下面的任务栏也没了!