问题:网站一直转圈无法访问
排查:
1:登录阿里云查看服务器状态,显示正常【运行中】
2:查看阿里云服务器【监控信息】显示cpu使用率高达60%
3:Xshell连接服务器使用【top】命令查看cpu使用情况显示【mysql占用cpu高达280%】
4:使用navicat连接数据库使用使用【show full processlist;】命令,列出所有正在执行的sql语句
6:通过分析发现存在大量重复且执行时间过长的慢语句
结论:
1:sql语句执行过慢需要优化
2:临时表大小过低需重新分配
紧急处理:
使用mysql【kill id;】命令杀死执行线程
最终处理:
1:重新优化语句,去除无用联表,精准查询条件
2:优化数据库配置etc/my.cnf【修改后无需重启】
临时表大小:【tmp_table_size=200M】
临时表最大上限:【max_heap_table_size=200M】
join联表查询缓存性能:【join_buffer_size=8M】
mysql查询结果注解:
Id:连接mysql 服务器线程id,可以通过kill杀死该线程。
User:连接当前线程的数据库用户
Host:执行该语句的用户IP
db: 线程连接的数据库,如果没有则为null
Command: 显示当前连接的执行的命令,一般就是休眠或空闲(sleep),查询(query),连接(connect)
Time: 线程处在当前状态的时间,单位是秒
State:显示使用当前连接的sql语句的状态
Info: 线程执行的sql语句(用于分析排查的sql语句),如果没有语句执行则为null。