• 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%一下;

    问题得到解决!

  • 相关阅读:
    CCS的一些问题
    SignalTapII新特性Storage Qualification
    信号发生器输出幅值与输出阻抗的关系
    关于print函数的一些细节问题探讨
    hp3020 打印机驱动完全卸载方法
    【转】Ruby Selenium 测试
    [nodejs]CoffeeScript里实现Mixin
    [Ruby]ARGF的使用
    【Groovy】使用Maven集成Groovy代码
    [nodejs]optimist库
  • 原文地址:https://www.cnblogs.com/isungge/p/12720530.html
Copyright © 2020-2023  润新知