zoukankan      html  css  js  c++  java
  • mysql 占用90%多的CPU,解决思路

    网站打开很慢,爆出了连接数据库的错误,进入服务器,top 看了下,mysql占用cpu 基本维持在90以上;

    mysql> show variables like '%slow%';               #查看慢查询有没有开启,发现没有,加上了慢查询:

    在mysql的配置文件my.cnf 中的[mysqld] 模块下 增加:

    slow_query_log = TRUE   #开启慢查询日志

    slow_query_log_file  =  /var/log/mysql/slow_query_log.txt   #日志存放位置

    long_query_time = 5   #超过5秒会记录

    慢查询开启后,观察了一阵子,发现并没有记录日志,

    mysql> show full processlist;    #查看当前实时对mysql的访问情况

    发现有条sql语句在运行,但并不复杂;

    mysql>flush status;   #刷新状态变量

    mysql> show status;  #查看mysql的所有状态变量

    发现 Handler read rnd next  的值有2G多大,该变量表示:从数据文件中读取行的请求数。如果你在扫描很多表,该值会很大。通常情况下这意味着你的表没有做好索引,或者你的查询语句没有使用好索引字段。

    重新观察之前并没在意的那台简单的sql语句,发现虽然语句简单但是所查表的数据量很大,而且查询条件字段没建索引,给字段建上索引再 top 下,发现mysql 的cpu占用率为10%一下;

    问题得到解决!

  • 相关阅读:
    ubuntu远程windows桌面
    spring boot 给返回值加状态 BaseData
    spring boot 拦截异常 统一处理
    IntelliJ IDEA spring boot 远程Ddbug调试
    IntelliJ IDEA 常用插件
    spring boot 请求地址带有.json 兼容处理
    spring boot 接口返回值去掉为null的字段
    spring boot 集成disconf
    Spring boot 自定义拦截器
    Linux下安装MySQL
  • 原文地址:https://www.cnblogs.com/isungge/p/12720530.html
Copyright © 2011-2022 走看看