您的位置:首页 - 教程 - MYSQL - 正文
缺少索引导致的服务器和MYSQL故障。

故障现象:

  

    网站访问缓慢。

    数据库RDS: CPU满,连接数满,其他值都是空闲。

    apache服务器:CPU正常,IO正常,流量报警,内存爆满。

 

解决思路:

    一、没遇到过此情况,一脸懵逼。

    二、请教大神寻求思路。

根据现行表明有可能是:

    1、慢查询,表锁
    2、CC攻击或者蜘蛛抓取导致大量的小查询(可能没有索引)

 

        一、查看数据库,有没有存在慢查询和锁表情况。(show full processlist),关注:查看最长时间查询的几个连接。注意:(带动作的连接,如果只连接值是null)不操作可忽略

      一、1:如果存在表锁查看什么表锁住了,show OPEN TABLES where In_use > 0;。

故障原因: 二、经过查询2条SQL缺少索引,但是这2条索引查询时间都在1秒正常值内,因为查询较多引起的堵塞。(果断添加这2条缺少的索引)。

故障原因:   二、2、SELECT * FROM tp_supplier WHERE supplier_id > 0 AND fenxiao_cate_id_1 = '1376827' AND is_show = 1 AND LENGTH(brand_logo) > 0 AND is_recommend = 1 ORDER BY order_by DESC LIMIT 0, 7  (该SQL查询字段中 tp_supplier.brand_logo > 0 传入的数据类型与表字段定义不一致,会导致索引失效,建议改为 tp_supplier.brand_logo > '0' )

      三、5分钟后数据库恢复正常,网站恢复正常,一脸无懵逼。

常用故障诊断工具:top 、vmstat 、iotop、ifstatus、mytop、iftop -i eth1、iostat


评论: