求助,数据库某个进程cpu占用高

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助,数据库某个进程cpu占用高相关的知识,希望对你有一定的参考价值。

CPU占用过高诊断思路

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使用率对比

参考技术A 打开任务管理器,关闭一些占用cpu较高的进程,但是不要关闭System Idle Process这个进程,这个进程是系统管理的进程,另外有很多个svchost.exe,这些进程也不要随便关闭,不然会引起关机或者系统重启
在“开始”----“运行”中输入:msconfig,然后在打开的“系统配置”对话框的“服务”和“启动”选项中关闭一些不需要开机就启动的程序软件或者后台服务项目
在电脑开机的时候,也会启动一些后台程序,可以在开机后打开任务管理器关闭那些无用的后台程序,或者退出那些暂时不需要的软件,节省CPU资源。
打开电脑机箱,对CPU散热片或者散热器进行清理,清除里面的一些灰尘等杂物,有条件的还可以给CPU加一些散热硅胶,或者更换一个更好的散热器。
现在我们电脑安装的软件越来越多了,很多的软件都带有后台更新程序,它们的后台更新程序可能在我们做某个需要大量cpu的时候也启动了。
所以可以讲这些软件的后台更新程序都关闭,对于那些设置了禁止后台更新,但还是自动更新的软件,流氓软件建议直接卸载。本回答被提问者采纳

为啥我的电脑播放ts视频文件,cpu占用那么高?

首先我申明我的电脑播放mkv的高清视频基本不占用cpu,我的显卡是4850.

现在放ts的文件cpu占用极高,很是不爽。难道4850不支持ts流的硬件解码?

以下是CPU高的一些情况
1.中毒或者中木马和大多数人想的一样.确实中毒或者中了木马可能引起CPU100%不下.但也只是个别.大多数这类病毒都在你的进程里.往往占用着95%以上的CPU.这点其实很容易看出来的.打开任务管理器后发现某个进程不熟悉很可疑的话可以先查毒后在看结果..就算你马上到论坛上发贴求助也有很多人会让你先杀毒.结果都是一样的这里可能又涉及到该用哪种杀软来杀毒会好一点.其实这也是看个人喜好.自己用的顺手就可以了.我个人推荐国内用KV.国外用卡吧.他们对于内存病毒扫描都有很不错的效果.这是对于机子配置比较好的来说.其实都一样.如果你机子用的起诺顿或是瑞星.KV和卡吧也用的起

2.硬盘数据无规律性
这也是最多出现CPU占用资源大.又很容易让大家忽视的一个问题.大多数人的系统都装在C盘.一般第一次安装操作系统时.技术人员会把你的系统盘分的比较小一点.其他盘都有不同的分法.因为系统盘最好是只装系统和一些系统的应用程序就可以了(一般杀软也装系统盘)而一些新手往往把一些不必要的东西都往系统盘里扔.有些人喜欢下载一些东西.而一些下载工具默认的保存地址都是在系统盘里..这就需要大家自己来规划的硬盘.比如将其中一个较大的盘来放下载的东西.系统外的应用软件放在单独一个盘.喜欢游戏的用户也可以单独分一个盘来.这里我推荐一个硬盘的分类方法 我是80G硬盘的.因为我是双系统的.我分为原E盘是放一些影音文件的 .办公则是放下载的和一下应用程序.如下载工具.QQ.等.G盘是放一些装机时的文件.重装系统时很重要.总之一句话.在系统盘里最好不要有多余的程序在就是了.
3.硬件问题对于新手是最难解决的.很多人只懂得用鼠标点来点去.对于脚旁边的那个箱子一点也不熟悉.有以下几种情况容易造成CPU100%
CPU风扇转动慢.只要一开机.CPU的风扇是转不停的.由于灰尘和一些脏东西的累积.很容易让CPU的风扇转动慢.直接导致CPU温度过高..这也是有很多人在看到CPU100%后不一会儿就自动重启或者是关机.都以为是中毒了.其实在CPU风度高于一定的温度.正常是高于60C-80C后.具体数值可以在BIOS中设置.电脑将会自动关机.以保护CPU
本身内存的配置不高.低于256M的内存在XP系统中很容易让CPU100%的.如果有条件的还是加一点内存吧
另外.在电源不稳定的环境下也很容易使CPU承受过多负荷.也很容易伤硬盘

4.软件运行冲突
最容易冲突的软件就杀软了.不同的杀软很容易造成冲突.有的人生怕中毒.一下就安装了N个杀软.这只有负方面的效果.最后系统损坏不是因为病毒.而是杀软的冲突.很容易造成CPU100%了.不过到那时就是重装系统的问题了.哪有心思还去管CPU?
希望给你带来一些帮助!
参考技术A 解码器有问题 调整下 或者换个播放器试试 有些播放器跟系统(Vista win7)兼容性不好 应该还是跟驱动有关

ts格式的码率比较大 网上有测试版的视频 你可以下载测试一下CPU的软解能力 想全面软解高清 没有4核不行

高清不要硬解 尤其是A卡 硬解问题非常多 驱动不完善

高清看多了你自己都看够了 仓库盘一堆净浪费 没有高清投影机 没有家庭影院音响系统 高清没有太大吸引力本回答被提问者采纳
参考技术B 运行软件的时候,都要载入CPU缓存的肯定高啊,不用担心没事 参考技术C 你用的什么播放器?可能是分离器没有选择好,换个播放器试一下

以上是关于求助,数据库某个进程cpu占用高的主要内容,如果未能解决你的问题,请参考以下文章

如何获取某个进程的cpu占用率

tomcat占用cpu过高解决办法

tomcat占用cpu过高解决办法

java cpu占用高,该怎么处理

Linux里面cpu占用太高排查思路是啥?

CPU占用过高问题的排查及解决