高併發bug排查,警惕高許可權和無監督運維行為

Mondo 科技 更新 2024-03-03

關於作者:

江健,薄冰科技創始人,甲骨文ACE,11G OCM,擁有多年甲骨文設計、管理和實施經驗,精通資料庫優化、甲骨文CBO和並行性。 Eagle Eye 監控核心設計和開發人員,是一名高階 python Web 開發人員。

背景

最近我訪問客戶網站時,客戶報告說資料庫幾天前遇到了乙個“bug”,希望我們能幫忙排查。

客戶反饋現象如下:有乙個非常核心的系統資料庫,突然有一天用xxx schema登入後,正在執行的SQL處於並行狀態,DOP非常高,在多次故障定位失敗的情況下,只能暫時使用並行max servers引數將併發降低到32,以緩解過度併發的壓力。

故障確認

我們來看看前幾天資料庫的情況,失敗期確實很高。

切換到單個SQL操作**的情況,DOP非常高,然後被節流,這與客戶描述一致。

我開啟旁邊的監測報告,DOP被大幅降級。

初始並行度為192,邏輯CPU為96,與自動並行時資料庫的預設併發度非常相似。

初步調查

在客戶的帶領下,確認故障期與客戶描述基本一致。 僅聽描述,似乎有乙個觸發器用於在會話級別調整併發性或與資源管理器相關的東西。

但是,這是客戶的核心生產系統,理論上應該不可能進行猜想的調整。 通過快速調查,證實了該猜想不正確。

二次檢查

經過初步調查,我不禁懷疑客戶的描述是否有問題。 頂層活動按使用者過濾,突然發現使用者級別沒有並行性,很多執行在xxx使用者下的SQL都沒有並行性,其實只有乙個併發度高的SQL。 這也說明,最初的調查方向已經偏離。

此SQL文字未並行指定提示,結合觀察到的資訊,有點懷疑,想找應用確認最近有沒有變化。 甲方的另一位DBA斬釘截鐵地說,一定沒有改過,不僅沒改過,還懷疑是Oracle的bug。

當他說這可能是乙個錯誤時,我想申請在機器上做跟蹤的許可,但在我說之前,我問他為什麼懷疑這是乙個錯誤。 他說了一句話,讓我下定決心要寫一篇文章來記錄這個案例:“因為之前的SQL執行異常,他會用SQL Profile來修復SQL執行計畫,但經過這次修復,完全沒有效果。

震驚的罪魁禍首

實際上有乙個sqlprofile? 令我驚訝的是,為什麼我忽略了 SQLprofile SQL 基線疑難解答。

主要原因是他們之前已經優化過自己的系統,他們知道他們很難對核心進行更改,並且經常需要詳細演示新增索引的好處,以及可能的危害,首先在測試中,準生產環境來驗證邏輯讀取的縮減率, 然後演示哪些 SQL 受到影響,並描述對 Redo 的影響。

拿著這些材料再去開發團隊(嗯,外資企業),預約開會,多得到n封郵件確認,然後安排生產(每週只有一天可以生產在清晨),第二天生產完畢,需要在工廠觀察,確保生產倉庫的安全。

根據我對他們流程的了解,我幾乎可以原諒自己對 sqlprofile 的疏忽。 看了一下SQL對應的執行計畫,就有乙個sqlprofile,它以sys開頭,一般不在addm sql tune中。

確認了這一點,問題基本定位了,馬上驗證,果然這個系統的SQLprofile讓SQL使用高並行度,並且讓客戶的DBA新生成的SQLprofile沒有生效,結合審計等資訊,後來也確認確實是甲方的另乙個DBA在晚上執行了ADDM報告,並且看到報告給出的建議的好處,非常誘人,於是很快就採納了這個建議,並請了幾天假。

回顧和反思

這個案例在技巧上並不強,有很多值得深思的地方,但我感受最深的是,在系統資料庫的運維中,對運維人員運維行為的監督嚴重不足。 然而,正是這種高權重、無監督的運維,經常帶來故障,而且是相對難以排除的,至少經常是甲方DBA難以定位的故障。

在歷史文章中有很多這樣的情況,比如偷偷收集系統統計資訊、省略新增磁碟命令、不重啟就修改引數、重啟後失敗等。 彌補這種失誤的辦法,就是成為規矩,加入巡查,那麼有沒有好的做法來預測敵人的機會,防止它發生呢? 有成熟實踐或對這類問題有顧慮的朋友,歡迎在評論區交流。

相關問題答案

    小程式開發 如何構建高併發、高可用的小程式後端

    小程式後端是小程式的重要組成部分,負責處理使用者請求並提供相應服務。在小程式後端的開發中,如何構建乙個高併發 高可用的後端是乙個關鍵問題。本文將介紹一些構建高併發 高可用的小程式後端的技巧和策略。.選擇正確的技術棧 選擇合適的技術棧是構建高併發 高可用的小程式後端的關鍵之一。在選擇技術堆疊時,您需要...

    採訪中詢問如何解決高併發問題

    在網際網絡行業,高併發是乙個共同而嚴峻的挑戰。當系統暴露於大規模使用者訪問時,可能會導致系統效能下降 響應時間延長,甚至系統崩潰。因此,解決高併發問題對於保證系統的穩定性和使用者體驗非常重要。本文將從架構層面 資料庫層面 快取技術 優化等不同角度詳細介紹高併發場景。.解決架構層面的高併發問題。. 橫...

    在海量資料高併發的場景下,構建Go ES8企業級搜尋微服務

    下設 ke chaoxingitcom GO ES企業級海量資料高併發場景解決方案。一 引言。在當今的數字時代,海量資料的生成和處理已成為企業面臨的重要挑戰。在高併發場景下,如何快速 準確地處理海量資料,保證系統的穩定性和效能,成為企業必須面對的問題。GO 和 Elasticsearch ES 的結...

    PHP Go 是模仿一本簡單的書本開發的,實踐了實際的高併發、高可用的微服務架構

    夏種植科 超興吉特com PHP GO仿製簡單書本,開發出高併發 高可用的微服務架構。 專案背景。簡書是乙個優秀的部落格平台,具有高併發 高可用 可擴充套件等特點。為了提高我們的技術水平,我們決定使用PHP和GO開發乙個模仿簡書的部落格平台,實踐高併發 高可用的微服務架構。第二,技術選擇。PHP P...

    PHP Go 是模仿一本簡單的書本開發的,實踐了實際的高併發、高可用的微服務架構

    下設 ke chaoxingitcom Php Go 開發模仿簡書 微服務架構概述。開發一本簡單的書,需要實現乙個高併發 高可用 可擴充套件的微服務架構,以滿足實際應用的需求。PHP 和 Go 語言的結合可以在 Web 應用程式開發中發揮各自的優勢。php p HP 是一種功能強大的伺服器端指令碼語...