記錄惡意SQL註入引發的RDS只讀資料庫CPU飈100%

来源:https://www.cnblogs.com/lucktomato/p/18081873
-Advertisement-
Play Games

前言: 在廣州這座城市下著小雨的晚上,我正在廚房洗著碗,突然手機有來電,脫下手套,一看是來自阿裡雲的告警電話。打開飛書查看告警內容,發現某個業務的RDS只讀實例CPU飈到100%,下意識覺得是不是有慢查詢導致,想著不會有啥問題,上去kill慢查就好了,結果發現是大問題....一、發現問題 2024年 ...


前言: 在廣州這座城市下著小雨的晚上,我正在廚房洗著碗,突然手機有來電,脫下手套,一看是來自阿裡雲的告警電話。打開飛書查看告警內容,發現某個業務的RDS只讀實例CPU飈到100%,下意識覺得是不是有慢查詢導致,想著不會有啥問題,上去kill慢查就好了,結果發現是大問題....
一、發現問題

  2024年3月10號 21:22分左右,手機響起來自阿裡雲的告警通知,確定了是阿裡雲RDS報警,MySQL有一波連接數進來,資料庫CPU瞬間100%,MySQL連接數也觸發告警,10分鐘不到有35000多條慢日誌,同時阿裡雲只讀庫進行了實例主備切換(故障切換)
問題影響了線上用戶登錄和充值,當時工作群運營反饋問題,技術這邊也關註起來。

二、分析造成原因

業務運行的RDS是1主4只讀的架構,然後開啟資料庫代理,讀寫分離。
一開始以為是管理後臺有人在查數據,全表掃描或者查看日期時間範圍很長導致只讀庫有慢查,因為之前出現過這種情況,結果看到控制台幾萬條慢查詢。影響我判斷的告警來了,只讀實例出現故障進行主備切換,以為是實例出現問題,我立馬去找阿裡雲客服問實例是否有問題,為什麼會主備切換了。結果技術客服回答,是因為有一波連接數進來,慢查裡面執行SQL有掃描行數很大的可以看看。然後就發現了下麵這個關鍵語句,執行1127次,每次掃描3789828行導致CPU漲到100%,

SELECT *
FROM `table_info`
WHERE user_name = '                        '
        AND game_xxxx = '123abc'
        AND platform = 'xxxpay'
LIMIT 1 

於是立馬反饋給該業務的開發,複製粘貼到群里,開發說user_name是空的,開發也很快修改代碼發佈到線上,本以為就要結束了,結果還是有這樣的SQL進來,這就神奇了....然後懷疑user_name不是空的,會不會是空格,結果我複製出來到文本編輯器,因為開了符號顯示,發現user_name的值是空+空格,真想大白了,太可惡了。

 三、解決辦法

開發同事修改代碼,正則匹配過濾,業務恢復

四、個人反思

1、遇到類似問題,細心按照流程思路找問題,不要急
2、第一時間先把阿裡雲告警臨時關閉,不然一直打電話影響排錯
3、查看告警的只讀活躍會話,如果有執行特別長時間的SQL,立馬kill別影響業務。
4、如果慢查特別多,先對掃描行欄位進行排序,找出掃描行特別多的SQL再分析
5、事後總結,做好記錄,處理事故同時也得到積累和進步

  

  




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文主要學習 FreeRTOS 互斥量的相關知識,包括優先順序翻轉問題、優先順序繼承、死鎖現象、創建/刪除互斥量 和 獲取/釋放互斥量等知識 ...
  • 一、六種Java線程狀態 新建狀態(New):當創建一個Thread實例後,線程就處於新建狀態。此時線程對象已經被分配了記憶體,並初始化了其成員變數的值。 就緒狀態(Runnable):也被稱為“可執行狀態”。當調用了線程的start()方法後,線程就進入了就緒狀態。此時線程已經具備了執行的條件,等待 ...
  • 痞子衡嵌入式半月刊: 第 95 期 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 本期刊是開源項目(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。 上期回顧 ...
  • 實驗環境: 兩台windows servers 一臺已經配置了FTP伺服器,IP為192.168.1.220,vmnet1 一臺作為客戶端測試,IP為192.168.1.138,vmnet1 一:FTP IP限制 1.關閉ftp伺服器端防火牆,使客戶端能pin通伺服器端 2.在客戶端資源管理器輸入f ...
  • 實驗環境: windows server虛擬機一臺 網路適配器:vmnet1 ip:192.168.1.220 一.安裝FTP服務 打開伺服器管理器 點擊添加角色,勾IIS,點擊下一步直到對話框消失 勾選FTP 從開始菜單找到管理工具 打開IIS 可以看見ftp服務的相關信息,說明安裝成功 二:新建 ...
  • 目錄一、zabbix部署1、安裝zabbix服務端2、準備資料庫(mariadb簡單點)3、修改服務的配置二、登錄zabbix三、客戶端配置1、安裝軟體包2、修改配置文件3、啟動客戶端服務四、報錯解決五、添加監控主機1、安裝軟體包2、修改配置文件3、啟動客戶端服務4、回到zabbix添加主機5、添加 ...
  • 想使用串口,找了半天也沒找到它所給的pin的使用示例,淘寶客服說只是硬體相容樹莓派。 想來想去,還是直接接個USB串口最方便。 但是插上不識別,說明沒有驅動。 直接在板子上編譯沒有header依賴,後續下載華碩對應的arm依賴能編譯但是驅動不能正常使用。 就在所給虛擬機上交叉編譯。 先按照手冊配置好 ...
  • innodb_log_file_size 和 innodb_buffer_pool_size 是 MySQL 資料庫中 InnoDB 存儲引擎的兩個重要配置參數。它們對資料庫的性能和可靠性有著顯著的影響。 1. innodb_log_file_size innodb_log_file_size 參數 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...