今天有个服务器速度变得非常慢,用工具一看,IIS堵塞进程达到100多个,肯定有问题,下面进入排查(聚友习惯把过程写出来,如果不需要过程,请直接查看下面第五条,直接的MySQL故障:mysqld-nt: Sort aborted错误的原因及解决办法):
首先考虑有网站死循环了,利用任务管理器和命令行工具,找到了堵塞的进程所在应用程序池,把进程中运行的网站分到不同的池之中,重启IIS。观察结果如下:堵塞进程没有改善,但堵塞进程分散到了其他几个站;
那问题就在这几个站之中,为了确认,把这几个站关闭,重启IIS。观察结果:没有堵塞;
那就一个一个开确定一下是来自哪个站,但观察结果是一开某一个站,整体的堵塞都会直线上升;
针对这个情况,找这几个站的共性,发现都是使用的MySQL数据库,那考虑是不是MySQL数据库问题呢?立刻到MySQL里面查看错误日志,到MySQL数据库目录中找到一个后缀名为“.err ”的文件,打开看,发现了很多如下日志:
问题基本可以确定就是来于MySQL
出现了这个问题,就解决他,先看问题,出现这个问题一般是存在数据量非常大的数据表,或是执行了带 order by OR group by 的 SQL 语句。 下面再说解决办法:建议您检查下内存的使用情况。建议将 MySQL 配置文件中的 sort_buffer_size 、read_rnd_buffer_size、read_buffer_size 设置大点(MYSQL配置文件 Unix/Linux: my.cnf,Windows: my.ini)。再加上内存与 CPU 使用量大的时候也会导致 MySQL 死掉。如果是虚拟主机用户,在查询的时候就会出现提示的mysql查询错误,可以与虚拟主机提供商联系。