• 一次关于mysql故障的处理


                               

        今天早上正在看文档,手机就收到报警了,说是有一个服务器不能访问了,直接登录到服务器上(还好服务器还能登录),利用top看了下发现资源占用不是很多,但是在进程里面发现Tasks: 1560 total,这个服务器一般的进程只是在100200之间,以前出现过mysql的一个表坏掉造成mysql挂死的情况,于是赶紧查看下mysql的日志,没发现错误,登录到mysql,利用show processlist命令查看,发现队列严重,有1000多个进程等待处理,于是执行:

    /usr/local/apache/bin/apachectl stop                                                 

    mysqladmin -uroot -p shutdown

    /etc/rc.d/init.d/mysqld start

    /usr/local/apache/bin/apachectl start

    开始正常,继续用top命令查看,发现进程又开始逐渐上升到1000以上,很明显mysql出问题了,另外还发现%wa这项特别高,也就是说io等待很严重,再次重启mysql,利用show full processlist查看mysql处理的进程,并打开另外一个窗口不停的用top查看%wa的大小,反复几次,终于发现有一个语句执行的时候导致%wa60%以上,下面那个语句就是罪魁祸首:

    select distinct tags from tags where status =0 order by click_count_mo desc limit 50

    单独执行这条语句1分多钟还没执行完,于是断定应该是distinct的效率太低造成的,tags表有200多万的数据,发现问题就好解决了,联系开发,当开发把distinct去掉后,问题解决!原来这个语句是昨天才放到刚建的虚拟主机上的!

           感谢下nginx,一台服务器出问题让我可以很从容的处理!呵呵!

  • 相关阅读:
    C语言-第四周作业
    第8次Scrum会议(10/20)【欢迎来怼】
    例行报告(20171011-20171019)
    C语言--第二周作业评分和总结(5班)
    C语言-第三周作业
    第一次Scrum会议(10/13)【欢迎来怼】
    单元测试之四则运算
    四则运算V1.1
    例行报告(20170927-20171010)
    C语言--第一周作业评分和总结(5班)
  • 原文地址:https://www.cnblogs.com/feihongwuhen/p/7170436.html
Copyright © 2020-2023  润新知