状态是:服务器cpu100% 负载100%
因为是有大流量的访问所以我首先检查php连接数
然后我调整了性能,改大了允许最大子进程
从35改到80问题依旧,改到120问题依旧,改到220问题依旧
于是我开始检查带宽,我服务器带宽是2MB
于是我开始检查数据库慢查询
- 查看慢SQL是否启用,查看命令:show variables like ‘log_slow_queries’; 如果结果为ON则是开启了,如果为OFF则表示禁用了。
- 开启慢查询命令:set global log_slow_queries = on;
- 查看是否开启:show variables like ‘log_slow_queries’;
- 查看慢查询参数,即设置超过多少秒的查询归为了慢查询。参数为:long_query_time,查询命令: show global variables like ‘long_query_time’;mysql默认时间为10秒,即10秒及以上的查询被归为了慢查询。我们的实际项目中根本就不可能这么包容你,所以得提供查询效率优化sql,让程序更快的执行。
- 这里设置时间为1秒,即超过1秒就会被认为慢查询。设置命令:set global long_query_time =1;用命令设置的,会立即生效,不用重启mysql服务。但重启mysql服务后就会失效。
- 查看设置的时间, show global variables like ‘long_query_time’;即可看到现在已经变为1秒了
- 7查看慢查询存放日志,命令: show variables like ‘slow_query_log_file’;去相应目录下查看即可。
首先确定开启来慢查询日志,然后找到日志地址。用tail -f 日志地址发现 有慢查询现象
然后用EXPLAIN 检查了这个sql语句发现没有添加索引。于是增加了索引。然后
增加索引后,慢查询日志不再增加,服务器负载回归正常。