生產監控報警一:阿里雲 RDS 監控報警

前言

    早上擠地鐵的時候收到了阿里雲的監控報警,RDS 的 CPU 的負載達到了 90%mysql

 

排查

    由於是昨天晚上上的線,微信公衆號也是在晚上才放出活動連接,當時也是考慮了可能會到來的使用量,把後臺活動負載到了 3 臺服務器,但是沒想到居然是 mysql 報出了告警。linux

 

    查看了數據庫的使用量,發現總共有 3 w 多條的插入記錄,而 CPU 的使用率確一直保持在 90% 不下來,正常狀況下,2核4G 的一臺 mysql 數據庫不可能被這點插入量就給幹趴下了,並且只是 CPU 的使用率特別高,內存的使用率確不多,問題可能出在 SQL 執行上面,部分 SQL 沒有優化好致使的。sql

    百萬級別的訪問量纔算是大數據,須要從架構的層面去考慮,3萬的訪問量並不須要在架構上優化,直連可能均可以頂住。數據庫

 

    看了下阿里雲自帶的 RDS 監控,裏面的 SQL 執行記錄,發現有幾條 sql 的執行特別慢,每條語句執行的時間快 3 秒了,沒有優化好。服務器

檢查了表結構,發現是缺乏索引致使的,添加了索引,RDS 的CPU 這才恢復了正常。微信

 

當一張表的數據過大的時候,添加索引須要選擇半夜用戶量少的時候,由於百萬級別的表添加索引可能須要 七、8個小時才能建好索引。架構

 

    一開始也懷疑了是遭到了攻擊,後臺想一想是錯的,由於生產的數據庫是添加過白名單的,沒有在白名單裏面的 IP 是不可能操做數據庫的。大數據

 

簡單防止 SQL 注入、DDoS 等攻擊

    簡單來講就是經過屏蔽攻擊的 IP 地址來保護服務器。優化

    linux中iptables屏蔽指定ip及ip段。阿里雲

    屏蔽某個 IP:

    iptables -I INPUT -s xxx.xxx.xxx.xxx -j DROP

    屏蔽指定 IP 段:

    iptables -I INPUT -s 192.168.0.0/24 -j DROP

相關文章
相關標籤/搜索