记一次服务器慢的检查

状态是:服务器cpu100% 负载100%

因为是有大流量的访问所以我首先检查php连接数


发现有达到上线次数

然后我调整了性能,改大了允许最大子进程


从35改到80问题依旧,改到120问题依旧,改到220问题依旧

于是我开始检查带宽,我服务器带宽是2MB

发现带宽没有超出。

于是我开始检查数据库慢查询

  1. 查看慢SQL是否启用,查看命令:show variables like ‘log_slow_queries’; 如果结果为ON则是开启了,如果为OFF则表示禁用了。
  2. 开启慢查询命令:set global log_slow_queries = on;    
  3. 查看是否开启:show variables like ‘log_slow_queries’; 
  4. 查看慢查询参数,即设置超过多少秒的查询归为了慢查询。参数为:long_query_time,查询命令: show global  variables like ‘long_query_time’;mysql默认时间为10秒,即10秒及以上的查询被归为了慢查询。我们的实际项目中根本就不可能这么包容你,所以得提供查询效率优化sql,让程序更快的执行。
  5. 这里设置时间为1秒,即超过1秒就会被认为慢查询。设置命令:set global long_query_time =1;用命令设置的,会立即生效,不用重启mysql服务。但重启mysql服务后就会失效。
  6. 查看设置的时间, show global variables like ‘long_query_time’;即可看到现在已经变为1秒了
  7. 7查看慢查询存放日志,命令: show variables like ‘slow_query_log_file’;去相应目录下查看即可。

首先确定开启来慢查询日志,然后找到日志地址。用tail -f 日志地址发现 有慢查询现象

然后用EXPLAIN 检查了这个sql语句发现没有添加索引。于是增加了索引。然后

增加索引后查询结果

增加索引后,慢查询日志不再增加,服务器负载回归正常。

一切回归正常了。