程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> 缺少索引導致的服務器和MYSQL故障。

缺少索引導致的服務器和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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved