返回顶部
首页 > 资讯 > 数据库 >【Mysql】主机cpu 之-sys使用率过高
  • 900
分享到

【Mysql】主机cpu 之-sys使用率过高

2024-04-02 19:04:59 900人浏览 泡泡鱼
摘要

学习大神的Http://mp.weixin.qq.com/s/hXtCzSnlVfo9Cq92538ipw自己整理一点思路 1.0top看cpu消耗,发现sys比usr要高不少,这非常不正常 1

学习大神的Http://mp.weixin.qq.com/s/hXtCzSnlVfo9Cq92538ipw自己整理一点思路
1.0top看cpu消耗,发现sys比usr要高不少,这非常不正常


1.1使用pstack看 MySQL所有线程的调用栈:

InnoDB线程同步机制

我们知道linux线程同步有Mutex,spin lock,条件变量,rw lock等多种同步机制,InnoDB并没有直接使用系统的同步机制,而是自己定义了互斥结构数据结构kernel_mutex,将系统的spin lock,mutex,和条件变量融合一起

【Mysql】主机cpu 之-sys使用率过高

如图,kernel_mutexmutex对象的中重要的结构成员为os_event和lock_Word

  • kernel_mutex主要涉及mutex_create,mutex_enter,mutex_exit函数,会分别使用glibc的malloc()和free()调用动态分配和释放内存

  • 封装mutex和条件变量,图中绿色框区域
    Mysql线程之间发送异步信号来进行同步主要通过os_event_struct结构体中的os_mutex(封装os的pthread_mutex_t)和cond_var(封装os的pthread_cond_t)成员对象实现。当InnoDB在获取的时候,首先先努力自旋一段时间,如果超过innodb_sync_spin_loops的阈值,就会通过函数os_event_wait_low()在os_event_struct->cond_var上等待。如图,当某个线程释放了锁的时候,通过os_cond_broadcast尝试发送广播唤醒所有等待os_event_struct->cond_var条件变量的线程.这些线程被唤醒后又继续竞争争抢os_event_struct->os_mutex

  • spin lock,图中黄色框区域
    通过lock_word做spin wait。线程想要争抢锁的时候先判断这个值,如果lock_word为1就继续自旋等待。如果发现其他线程释放了锁该值变为0的时候,就通过test_and_set改为1,"告诉"其他线程这把锁被持有了

InnoDB这样设计的目的都是延缓线程被挂起并进入os wait的速度,因为每一次进入os wait等待被唤醒或者唤醒都会进行一次上下文切换.但是也只能是延缓,并不能阻止,如果持续恶化得不到环境,最后仍然会进入os的等待队列,将会产生大量的上下文切换。但是有两个问题:

  • kernel_mutex是个全局锁,保护事务,buffer pool,锁,等InnoDB存储引擎实现的大部分对象.当mysql突然有大量访问,并发一旦非常高的时候,mutex冲突非常剧烈,此时临界区变得非常大,同时也会浪费cpu很多时间空转。所以这也解释了sys cpu大量消耗在自选空转中

  • 并且并发高的时候会频繁调用malloc()申请内存,而glibc本身的malloc()本书频繁调用系统mutex_lock()和unlock(),在多线程高并发场景下并且资源不足的场景下,也会造成系统各种mutex竞争严重。大量线程被挂起等待os pthread_cond_broadcast广播被唤醒,随之而来的是大量的上下文切换

通过dstat看到此时cpu每秒有近20W次的上下文切换,综上所述,sys cpu负载高主要以下:

  • (1)cpu内核态spin,大量线程cpu在内核态自旋等待

  • (2)系统上下文切换,又分为:

    • spin仍然失败的,最终进入os wait,调用pthread_cond_wait等待条件满足时被唤醒

    • malloc()频繁加减os mutex,且系统内存紧张


您可能感兴趣的文档:

--结束END--

本文标题: 【Mysql】主机cpu 之-sys使用率过高

本文链接: https://lsjlt.com/news/49901.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 【Mysql】主机cpu 之-sys使用率过高
    学习大神的http://mp.weixin.qq.com/s/hXtCzSnlVfo9Cq92538ipw自己整理一点思路 1.0top看cpu消耗,发现sys比usr要高不少,这非常不正常 1...
    99+
    2024-04-02
  • 虚拟主机cpu使用率高怎么办
    虚拟主机cpu使用率高的解决方法:1.升级硬件设备,优化开机启动项;2.提升cpu份额,保证cpu周期;3.提升虚拟主机内存量,减少磁盘网络活动;具体分析如下:升级硬件设备严格核对显卡驱动型号、版本;优化开机启动项,避免过多程序同时运行;通...
    99+
    2024-04-02
  • 云主机cpu使用率高是怎么会回事
    云主机cpu使用率高的原因:1、云主机部署的网站程序受到CC攻击导致;2、选择的云主机无法满足当前业务需求,从而导致云主机cpu使用率高;3、云主机的硬件设备出现故障,无法正常提供功能,从而导致云主机cpu使用率高的情况发生。具体内容如下:...
    99+
    2024-04-02
  • 排查WMI CPU使用率过高问题
    排查WMI CPU使用率过高问题的步骤如下:1. 确认问题:首先,确认系统的CPU使用率确实过高。可以通过任务管理器或性能监视器来查...
    99+
    2023-09-13
    CPU
  • 电脑cpu使用率过高如何解决
    高CPU使用率可能是由于以下原因引起的:1. 病毒或恶意软件:运行一个病毒扫描程序来检测和清除任何可能感染计算机的恶意软件。2. 后...
    99+
    2023-08-23
    电脑
  • 虚拟主机cpu占用率高如何解决
    虚拟主机的 CPU 占用率高可能是由以下原因导致:1. 资源不足:虚拟主机所分配的 CPU 资源不足以满足当前的负载需求。解决方法可...
    99+
    2023-09-06
    虚拟主机
  • 虚拟主机cpu占用率很高如何解决
    如果虚拟主机的CPU占用率很高,可以尝试以下解决方法:1. 优化网站代码:检查网站的代码是否存在效率低下的部分,尽量减少不必要的计算...
    99+
    2023-09-12
    虚拟主机
  • 防止Golang后台进程CPU使用率过高
    一分耕耘,一分收获!既然打开了这篇文章《防止Golang后台进程CPU使用率过高》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎...
    99+
    2024-04-05
  • 遇见Linux系统CPU使用率过高怎么办?
    导读对于新手来说,可能各种进程管理工具用的还不算熟悉,那么遇见Linux系统CPU系统使用率过高怎么办?那么就学习一下吧。查看CPU使用...
    99+
    2023-06-05
  • Linux系统CPU使用率过高的排查技巧
    本篇内容介绍了“Linux系统CPU使用率过高的排查技巧”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下面,介绍几个 CPU 使用率过高的排...
    99+
    2023-06-16
  • 总结导致oracle数据库主机CPU sys%高的一些原因
    今天我分享下简单总结导致 oracle 数据库主机 CPU sys% 高的一些原因。 在日常的数据库运维中,操作系统 CPU 使用率一直是我们衡量系统负载的一个比较贴切的...
    99+
    2024-04-02
  • 排查CPU使用率高Lsass.exe问题
    Lsass.exe(Local Security Authority Subsystem Service)是Windows操作系统中...
    99+
    2023-09-08
    CPU
  • windows CPU使用率高如何解决
    本篇内容主要讲解“windows CPU使用率高如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows CPU使用率高如何解决”吧!CPU使用率高的解决方法原因一 硬件方...
    99+
    2023-07-01
  • 香港云主机cpu使用率100%是怎么回事
    香港云主机cpu使用率100%的原因:1、使用的香港云主机硬件配置太低导致cpu使用率100%;2、香港云主机造成恶意网络攻击,消耗云主机资源导致cpu跑高;3、使用香港云主机搭建的网站程序随着CMS后台的成熟从而使占用资源越来越大,以及网...
    99+
    2024-04-02
  • 云vps主机cpu使用率100%的原因有哪些
    云vps主机cpu使用率100%的原因有:1、使用的云vps主机硬件配置太低,导致cpu使用率100%;2、云vps主机遭受恶意网络攻击,消耗云主机资源导致cpu跑高;3、使用云vps主机搭建的网站程序随着CMS后台的成熟从而使占用资源越来...
    99+
    2024-04-02
  • 服务器CPU占用率过高怎么解决
    服务器CPU占用率过高解决的方法:1、关闭不常用端口和多余启动项,以免消耗系统资源和内存;2、不要安装和运行多余的软件,以免出现CPU内存占用率高的情况;3、安装合适的杀毒软件,以免额外增加系统的负担;4、设置应用程序池的回收时间,可以及时...
    99+
    2024-04-02
  • 服务器CPU占用率过高如何解决
    服务器CPU占用率过高可能是由于多种原因引起的,可以采取以下几种方法来解决: 检查系统资源使用情况:使用系统监控工具查看哪些进程...
    99+
    2024-05-09
    服务器
  • win8开机后CPU占用率过高只因开启了云同步
    现在很多朋友的是使用的win8系统,得益于win8系统本身的云属性,很多设置、文件都可以在云端同步,即使在别的系统中只要我们用自己的微软账户登录,就能通过联网同步我们熟悉的设置和文件,很方便的说。但与此同时...
    99+
    2022-06-04
    过高 只因 占用率
  • win7的cpu使用率高如何解决
    这篇文章主要介绍“win7的cpu使用率高如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win7的cpu使用率高如何解决”文章能帮助大家解决问题。解决方法:...
    99+
    2022-12-08
    win7
  • 香港云vps主机cpu使用率100%是怎么回事
    香港云vps主机cpu使用率100%的原因有:1、硬件配置太低,导致cpu使用率100%;2、遭遇恶意网络攻击,消耗云主机资源导致cpu跑高;3、搭建的网站程序随着CMS后台成熟从而使占用资源越来越大,以及网站程序出现兼容性问题导致香港云主...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作