• MySQL数据库 CPU飙升到100%


    系统学习性,移步 IT-BLOG

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

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

    一、开启慢查询日志

    查看慢查询SQL是否启用:ON是开启,OFF是关闭。

    show variables like 'log_slow_queries';
    
    • 1

    开启慢查询日志

    set global log_slow_queries = on;
    
    • 1

    二、使用show processlist

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

    show processlist
    
    • 1

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

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

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

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

    三、大量的睡眠线程导致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秒自动断开 (根据实际情况设置)
    
    • 1
    • 2
    • 3

    配置完成后重启Mysql,不重启的话,可以设置全局的等待超时时间

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

    四、合理优化配置项

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

    innodb_buffer_pool_size
    
    • 1

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

    max_connections = (Available RAM – Global Buffers) / Thread Buffers 最大连接数 = (有效内存 - 全局缓冲容量)/ 线程缓冲容量
    
    • 1

    当不经常更改且Web服务器接收许多相同查询时,查询高速缓存可能会很有用。查询缓存将SELECT语句的文本与发送到客户端的相应结果一起存储。

    query_cache_size
    
    • 1

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

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

  • 相关阅读:
    支付宝证书到期更新完整过程
    2022年最新最详细的MYSQL数据库安装(详细图解过程、毕成功)
    pytorch PythonAPI torch.....................
    Nginx正则表达式、location匹配、rewrite重写
    DINO目标检测实验结果可视化(1)——loss和mAP
    iOS视频捕获实践篇
    WPS中图的自动编号及引用
    贝加莱/krones克朗斯触摸屏维修5AP920.1505-K16故障分析
    综述:目标检测二十年(机翻版)(未完
    python3安装psycopg2
  • 原文地址:https://blog.csdn.net/zhengzhaoyang122/article/details/127839597