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

    问题得到解决!

  • 相关阅读:
    python生成试题库和界面 (python generate test database and layout)
    python生成数据库(python generate database)
    Go语言基础之流程控制
    Go语言基础之运算符
    Go语言基础之变量和常量
    VS Code配置Go语言开发环境
    Linux安装教程|详细
    安装Go语言及搭建Go语言开发环境
    Go语言
    Django2.0路由匹配path的用法
  • 原文地址:https://www.cnblogs.com/isungge/p/12720530.html
Copyright © 2011-2022 走看看