今天中午公司App出现网络错误无法请求数据的情况,登上阿里云看cpu使用率居然一直高达90+%,于是上服务器看究竟是哪个程序占用的,top一下,发现是mysql,下面就开始针对为什么会占用这么高的cpu问题着手解决。
1、查询原因
一般情况下,mysql占用过高多是有慢查询,但是打开my.cnf发现,之前的技术并没有打开慢查询日志,这里可以加上慢查询日志,然后重启mysql,等待日志。
slow-query-log=1 # 慢查询:确认开启
slow-query-log-file='/var/www/htmllog/slowlog.log' # 慢查询:日志文件及路径
long_query_time = 3 # 慢查询:指定超过3s仍未完成的语句,为执行过慢的语句
另一种方法是执行show PROCESSLIST语句,看哪条sql占用过多。
2、mysql调优
经过第一步之后判断有一条语句执行时间总是超过三秒,然后去看表结构的设计,有个where条件没加索引,暂时停掉httpd服务
给字段加上索引,重启之后,慢查询日志里再无记录,问题解决。