小诺文档中心 小诺文档中心
首页
小诺博客 (opens new window)
DevOps
云原生
技术
更多
网址导航
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

kevin

运维界的菜鸟
首页
小诺博客 (opens new window)
DevOps
云原生
技术
更多
网址导航
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 踩坑

    • mysql

      • mysqldump备份失败以及解决方法汇总
      • MySQL报错ERROR1872(HY000)Slave failed to initialize
      • mysql错误代码
      • mysql负载高的解决
        • mysql损坏修复
        • 修改innodb_page_size值后mysql不能启动
        • mysql优化
      • oracle

      • yum故障处理
      • centos7启动时出现dracut-initqueue timeout
      • dell笔记本安装centos系列报lspcon init failed错误
      • ElasticSearch启动报错,bootstrap checks failed
      • NAVICAT PREMIUM 12闪退问题
      • vsftpd用户设置为nologin无法登录
    • 技术文章

    • 运维文档

    • 计算机网络

    • 开源应用

    • JAVA应用

    • 技术
    • 踩坑
    • mysql
    xiaonuo
    2022-06-19
    目录

    mysql负载高的解决

    # 一、应急解决办法

    在MySQL数据库连接数很多,而且大多属于活跃的状态时MySQL机器基本上负载很高,属于基本上快要死去的状态了. 这时怎么办呢?

    有可能两个办法.

    第一: 先限制Innodb的并发处理.如果innodb_thread_concurrency = 0 可以先改成 16或是64 看机器压力,如果 非常大,先改成16让机器的压力下来,然后慢慢增达,适应自已的业务. 处理方法:

    set global innodb_thread_concurrency=16;

    第二: 对于连接数已经超过600或是更多的情况,可以考虑适当的限制一下连接数,让前端报一下错,也别让DB挂了. DB在了,总是可以用来加载一下数据,当数据加载到了nosql里了,慢慢的DB压力也会降下来的. 限制单用户连接数在500以下. 如:

    set global max_user_connections=500;

    (MySQL随着连接数的增加性能会是下降的,这也是thread_pool出现的原因) 另外对于有的监控程序会读取information_schema下面的表的程序可以考虑关闭下面的参数 innodb_stats_on_metadata=0

    set global innodb_stats_on_metadata=0;

    这个参数主要防止对读取information_schema时造成大量读取磁盘进行信息统计(如果慢查询中出现关于information_schema中表时,也可以考虑禁用该参数)

    # 二、问题分析

    思路: 1、确定高负载的类型 htop,dstat命令看负载高是CPU还是IO 2、监控具体的sql语句,是insert update 还是 delete导致高负载 3、检查mysql日志 4、检查硬件问题

    dstat

    可以看到具体是哪个用户哪个进程占用了相关系统资源,当前CPU、内存谁在使用

    mysql错误代码
    mysql损坏修复

    ← mysql错误代码 mysql损坏修复→

    最近更新
    01
    postgresql安装
    06-24
    02
    oracle笔记
    06-24
    03
    opengauss笔记
    06-24
    更多文章>
    Theme by Vdoing | Copyright © 2019-2022 kevin | 小诺运维
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式
    ×