我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL数据库CPU飙升到100%解决方案

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL数据库CPU飙升到100%解决方案

1、定位cpu问题所在

当cpu飙升到100%时,先用操作系统命令top命令观察是不是mysqld占用导致的,如果不是,找出占用高的进程,并进行相关处理。

2、查看慢查询日志

进入mysql命令行

mysql -h主机地址 -u用户名 -p用户密码

查看慢查询SQL是否启用:ON是开启,OFF是关闭。
show variables like ‘log_slow_queries’;

开启慢查询日志
set global log_slow_queries = on;

3、使用show processlist查看运行线程

如果是mysqld造成的,show processlist显示用户正在运行的线程,看看里面跑的session情况,是不是有消耗资源的sql在运行【查看Time这一列最大值】。找出消耗高的sql,看看执行计划是否准确,index是否缺失,或者是数据量太大造成。

show processlist
注意state字段中如果包含大量的Sending data、Wating for tabls、或者各种Lock、大概率是SQL造成数据库拥堵。优化对应的SQL,开启慢查询日志,分析sql语句进行优化。

一般来说,肯定要kill掉这些线程(同时观察cpu使用率是否下降),等进行相应的调整(比如说加索引、改sql、改内存参数)之后,再重新跑这些SQL。

也有可能是每个sql消耗资源并不多,但是突然之间,有大量的session连进来导致cpu飙升,这种情况就需要跟应用一起来分析为何连接数会激增,再做出相应的调整,比如说限制连接数等。

阻止滥用资源的程序: 当网站受到攻击时,有可能在短时间内建立异常高的连接数量。MySQL中的PROCESSLIST可用于检测顶级用户并阻止对滥用连接的访问。

4、大量的睡眠线程导致CPU过高

运行show full processlist

【1】根据Command这一列发现大量的Sleep

【2】再根据Time这一列 查看当前Sleep线程的sql所用的耗时

【3】根据sql睡眠线程耗时时间 配置msyql

【4】打开mysql的配置文件my.cnf文件

配置如下:

vim /etc/my.cnf

[mysqld]
wait_timeout=20 ## 大于20秒自动断开 (根据实际情况设置)
配置完成后重启Mysql,不重启的话,可以设置全局的等待超时时间

mysql> set global wait_timeout=20;mysql> show global variables like '%timeout';

5、合理优化配置项

检查一下MySQL设置,有助于确定内存使用情况,从而为MySQL分配合适的值。缓存在InnoDB存储的缓冲池中完成。缓冲池的大小对系统性能起着关键作用,并被指定为可用RAM的50%-70%之间的值。如果池大小,将导致页面过度刷新,如果太大,将由于内存竞争而导致交换。

innodb_buffer_pool_size
max_connections为了在任何时刻为MySQL分配尽可能多的连接数,并避免单个用户使服务器过载,需要使用max_connections。每个线程使用RAM的一部分进行缓冲区分配,因此它根据RAM的大小限制最大连接数。

max_connections = (Available RAM – Global Buffers) / Thread Buffers 最大连接数 = (有效内存 - 全局缓冲容量)/ 线程缓冲容量
当不经常更改且Web服务器接收许多相同查询时,查询高速缓存可能会很有用。查询缓存将SELECT语句的文本与发送到客户端的相应结果一起存储。

query_cache_size
因此,此参数仅用于此类应用程序服务器,否则将被禁用,并为其他服务器设置为零。

为了避免资源争用,尽管启用了该功能,但应将该值设置为10MB左右的最小值。

来源地址:https://blog.csdn.net/t707584896/article/details/129971047

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL数据库CPU飙升到100%解决方案

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL数据库CPU飙升到100%解决方案

1、定位cpu问题所在 当cpu飙升到100%时,先用操作系统命令top命令观察是不是mysqld占用导致的,如果不是,找出占用高的进程,并进行相关处理。 2、查看慢查询日志 进入mysql命令行 mysql -h主机地址 -u用户名 -p
2023-08-16

阿里云服务器CPU突然飙升至100%的原因及解决方法

本文将针对阿里云服务器CPU突然到100%这一问题,进行深入的分析和探讨,并提供相应的解决方法。阿里云服务器是企业进行数据处理和存储的重要工具,而服务器CPU的性能则是决定服务器运行效率的关键因素。如果服务器CPU突然飙升至100%,可能会导致服务器运行速度变慢,甚至出现服务中断的情况。因此,了解和解决服务器CP
阿里云服务器CPU突然飙升至100%的原因及解决方法
2023-11-01

阿里云服务器到期数据库解决方案

随着企业信息化的快速发展,服务器的使用已经成为企业日常运营的必需品。然而,服务器的到期问题也成为了许多企业头疼的问题。本文将详细阐述如何解决阿里云服务器到期数据库的问题。一、阿里云服务器到期数据库的原因阿里云服务器到期数据库的主要原因有以下几个方面:账号到期:如果用户使用的是免费账号,那么账号到期后服务器也会到期
阿里云服务器到期数据库解决方案
2023-10-29

Mysql迁移到TiDB双写数据库兜底方案详解

这篇文章主要为大家介绍了Mysql迁移到TiDB双写数据库兜底方案详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-01-03

数据库数据同步解决方案有哪些

1. 数据库复制:通过复制主数据库的数据到备份数据库中,实现数据同步。2. 数据库镜像:在多个数据库服务器之间进行数据同步,镜像服务器可以实时将主服务器上的数据复制到备份服务器上,实现数据同步。3. 数据库备份与还原:通过定期备份主数据库,
2023-06-10

阿里云数据库寻找解决方案

阿里云数据库是一个强大的云计算平台,提供了多种数据库服务,包括MySQL、PostgreSQL、Oracle、MongoDB、Redis等。无论是在互联网应用中,还是在企业级应用中,阿里云数据库都能提供强大的数据处理和管理能力。正文:随着大数据时代的到来,数据已经成为企业的核心资产。因此,寻找一款能够满足企业需求
阿里云数据库寻找解决方案
2023-11-04

数据库安全解决方案有哪些

1. 访问控制:限制不同用户或角色的访问权限,确保只有授权用户才能访问敏感数据。2. 数据加密:使用加密技术对数据进行加密,确保即使数据被盗取也无法被解密。3. 数据备份与恢复:定期备份数据,以防止数据丢失或损坏,并确保能够快速恢复数据。4
2023-06-08

阿里云数据库安全解决方案

阿里云数据库安全解决方案是阿里云提供的一项全面的安全保障服务,旨在保护用户的数据库免受各种安全威胁和攻击。该解决方案包括多个组件和服务,涵盖了数据加密、访问控制、漏洞扫描、安全审计等多个方面,为用户提供了全方位的数据库安全保障。详细说明:数据加密阿里云数据库安全解决方案首先关注的是数据的加密问题。在数据传输过程中
阿里云数据库安全解决方案
2024-01-19

编程热搜

目录