寫給運維兄弟

来源:http://www.cnblogs.com/double-K/archive/2016/10/10/5940291.html
-Advertisement-
Play Games

寫在前面的故事 首先,給看官們講個故事:最近遇到過一個客戶,系統上線三年變的越來越慢,直到前幾個月全面爆發,系統前端使用人員不斷抱怨,甚至已經達到了不能使用的程度。這個時候他們的IT主管也是決策者無法忍受這種情況,就召集下麵的運維開會,詢問情況。 領導:現在系統這麼慢,前端都無法使用了,到底什麼情況 ...


寫在前面的故事

  首先,給看官們講個故事:最近遇到過一個客戶,系統上線三年變的越來越慢,直到前幾個月全面爆發,系統前端使用人員不斷抱怨,甚至已經達到了不能使用的程度。這個時候他們的IT主管也是決策者無法忍受這種情況,就召集下麵的運維開會,詢問情況。

  領導:現在系統這麼慢,前端都無法使用了,到底什麼情況?

  運維人員A:我們的伺服器CPU壓力太大,一直處於90%以上!

  運維人員B:我們的伺服器記憶體不足總是90%以上!

  運維人員C:我們的磁碟速度跟不上了,換SSD會有很大提高!

  領導:啥都不行了?那我們換高配伺服器!

  。。。。。。。。。。。。。。

  換了伺服器,好了半個月又開始慢...和之前一樣基本沒有任何緩解...領導又召集運維人員開會。

 

  領導:伺服器都換了,配置增加了一倍還多,為什麼還慢?

  運維人員:我們需要做讀寫分離,做集群分擔壓力!

  運維人員:軟體不行了,這個軟體太差!

  領導:。。。。

 

  如果你是領導,那麼你該如果決策呢? 如果你是運維人員,你會有上面的回答麽?

  可能你看完會笑,認為這是不可能發生的故事,然而這個故事確實是真實的!反之如果這個故事中看到了自己,那麼請仔細地往下看嘍!

 

--------------博客地址---------------------------------------------------------------------------------------

Expert 診斷優化系列 http://www.cnblogs.com/double-K/

 

 

廢話不多說,直接開整-----------------------------------------------------------------------------------------

 

資料庫在系統中的角色

  這個可能不用多說,大家都知道,一般系統慢都是慢在後端,而後端主要慢在與資料庫的交互!

  資料庫可以理解成獨立於你的系統,成為一個單獨的系統。無論從資料庫的物理設計,與前端的交互方式,自身的參數設置,索引的設計,維護方案等都影響著你整個系統中最慢的環節(可以說整個系統中資料庫就是最慢的環節)!

  同樣通過資料庫的狀態,也能很大程度上判定出你系統的問題到底在哪。尤其能界定清的一點就是軟體真的慢麽?軟體設計的不好?還是資料庫年久失修?

 

幾個問題

你瞭解你的資料庫麽

  瞭解決定效率

  也許很多老司機有這樣的感覺,我運維的效率如何,這取決於我對系統的瞭解!出現什麼樣的情況,我就知道是哪裡的問題,代碼在哪裡,問題在哪裡!看錯誤號、看異常便知問題,也就是未出茅廬,已知三分天下!反過來新手可能需要debug跟一遍還一知半解。對於資料庫道理也是一樣的,資料庫系統出現什麼問題你是否能很準確的定位的可能發生問題的幾個點?或者我需要查看系統哪些指標?系統中存在著哪些隱患?哪些功能慢?哪些語句需要優化?哪些運維策略做的不合理?

出現問題能從容面對麽

  從容出自積累

  從容面對這個詞說起來容易,但是我自身從小白的開發到現在的DBA一路走來真的是積累了很多,坑也踩了很多才能做到從容面對。

  這裡舉幾個現象 :

  當你的CPU從穩定的30% 飆升到90%以上,你能想到的可能原因是什麼? 怎麼樣快速排查?

  當你平穩的業務出現大面積超時,你能想到的可能原因是什麼? 怎麼樣快速排查?

真的瞭解麽

  習慣至深入

  在很多次和運維人員交流的過程中發現,我知道的名詞和他知道的名詞完全不是一個東西!比如:死鎖。同樣提到索引,他會說不用講,這我都懂。那麼什麼是聯合索引,什麼是覆蓋索引?覆蓋索引怎麼能降低你的死鎖概率? 這時他的反應才是:哦...原來還可以這樣,原來還有這麼多東西!

  模擬一個場景,領導開會的時候問你如下問題:

  領導問:

  • 資料庫有多大 ? 每天增長多少 ?
  • 高峰時間卡慢麽 ? 為什麼慢 ? 資料庫問題還是軟體或硬體?
  • 系統中那些語句慢 ? 慢到什麼程度?
  • 系統中哪些資源是瓶頸 ?
  • 存在死鎖情況麽? 怎麼產生的?
  • 有什麼潛在風險 ?
  • 怎麼解決 ?

  很多人運維人員的回答可能是:

  。。。。。。。。。。

 

  而問題發生的時候可能發生的情況就是這樣的:  

  

 

  

 你是哪一類?

  

  背景:今天,資料庫普遍存在問題,如:性能問題、安全問題、可靠性問題、數據備份問題、結構設計問題等。

  

  

  結論:

  1. 當出了問題時,用戶不知道是誰的原因,系統的真實狀況如何?
  2. 問題一大堆,多數人沒意識到是資料庫問題,很多人想弄但不會弄,還有一部分人會弄但傳統的方法不方便。

 

你是下麵那個角色?

  

  

  

 

  你是否像救火隊員?犧牲著自己的休息時間隨叫隨到的運維這你的系統?你是否像拆彈兵一樣維護著一個隨時爆炸的系統?你是否又像一個保姆,寸步不離的呵護著你的系統?

 

怎麼辦?

  可能不少看官就是上面的一員,但是又很迷惑,我該怎麼辦?我要從頭深入學習資料庫?學個幾年到精通? 當然不需要,其實資料庫運維很簡單!你只需要瞭解常規的運維套路,常規的系統指標,和常規的問題排查方式,這樣已經可以解決80%的問題。如果出現搞不定的20%你需要的資料庫專業人員的協作

  運維三步走:

  •   發現問題
  •   解決問題
  •   預防問題

 

  是不是感覺說的很輕巧...本文除了讓運維人員瞭解資料庫在系統中的重要,多關註資料庫,多瞭解一些資料庫的運維方式外,也推薦一款工具,所謂工欲善其事,必先利其器!

推薦一款工具

  

  Expert for SQLServer 一款SQLSERVER的體檢診斷專家。

 

  

 

發現問題

  全面體檢(不僅僅是性能),讓你知道資料庫的真實運行狀況、存在的問題及潛在風險

  按照6大維度, 108項指標(軟硬體環境、參數配置、結構設計、性能、可用性、備份、安全)建立體檢標準,定期對資料庫進行全面體檢,客觀呈現資料庫的真實運行狀況,所有問題一覽無餘。

  

 

解決問題

  快速診斷,分析出系統的主要問題併進行分類,同時提供解決之道

  通過數據分析,將資料庫的問題按照嚴重程度進行分類,按照提示的方式進行調整,所有問題。不管你懂資料庫還是不懂資料庫,你都可以清晰地知道,應該從哪入手,進而快速地解決問題,讓天下沒有難用的資料庫。

  

  

  

 

預防問題

  定期體檢,才能消滅隱患,買輛車還定期保養呢,這就是所謂的防患於未然,把問題消滅在萌芽中。

  個人建議,不管你用什麼工具,或使用腳本。

  核心系統體檢:1月/次 

  重要系統:2月或3月/次

  有功能上線,或結構變更等都需要做一次體檢。

  

多人或大牛協作

  就像一個系統運轉有硬體,網路,程式,資料庫,需要多方、多人協作一樣,資料庫的問題一樣,每個人都有擅長的部分,那麼多人協作就是可以更全面的解決系統問題,這款工具的最大優勢在於提供了多人協作的基礎數據。這份體檢數據包含了資料庫運行中的大部分指標,所有時間點的狀況,計數器的指標,語句間的阻塞等等信息,這遠勝於傳統運維中拼湊堆砌出來的腳本數據。

  這就像醫院的電子病歷,對全身有了全面的檢查,X光片子、各種檢驗、化驗數據在手,可能你去到哪個醫院,找哪個專家或醫生匯診都可以作為他們協作的依據!

  

 

  

--------------博客地址---------------------------------------------------------------------------------------

Expert 診斷優化系列 http://www.cnblogs.com/double-K/

 

 

-----------------------------------------------------------------------------------------------------

 

  總結 : 親身處理了上百家客戶的系統,大部分系統資料庫都存在著各種資料庫問題,而資料庫問題往往被忽視,直接被歸結為軟體的問題,廠商的問題!

  資料庫應該被我們重視起來,很多時候只是在資料庫上做一些常規的配置或簡單的優化,就能讓系統有幾倍甚至幾十倍的提升,而這些優化可能只是簡簡單單的資料庫層面完全不用改代碼的行為!

  系統運維需要定期體檢,這點真心希望運維人員能夠重視起來,也真心希望系統運維人員可以加深一下對資料庫的瞭解,多掌握一些常規的手段和必要的運維策略。

  工欲善其事,必先利其器,運維同樣需要一些簡單方便的工具!

   本文提到的工具下載鏈接:

   Expert for SQLServer 工具下載鏈接:  http://zhuancloud.com/ReceptionViews/Install.html

 

  本人使用工具優化的相關文章鏈接 : 

  

SQL SERVER全面優化-------Expert for SQL Server 診斷系列

 

 ----------------------------------------------------------------------------------------------------

註:此文章為原創,歡迎轉載,請在文章頁面明顯位置給出此文鏈接!
若您覺得這篇文章還不錯請點擊下右下角的推薦,非常感謝!

  引用高大俠的一句話 :“拒絕SQL Server背鍋,從我做起!”

 


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

-Advertisement-
Play Games
更多相關文章
  • Android Weekly中文筆記, Issue #225. 本期內容包括: Android 7.0的Quick Settings; Firebase; 相容舊版本的shared element transition; Wear; ORM: 用ActiveAndroid做資料庫存儲; 崩潰報告工具... ...
  • 在之前的文章中,我們將用戶的密碼使用SharedPreferences存儲,我們打開/data/data/com.wuyudong.mobilesafe/shared_prefs文件夾下的 config.xml 文件,導入到本地,查看內容: 密碼居然使用的是明文,這樣是非常不安全的。這裡採用md5加 ...
  • 做App測試時監測使用期間的cpu,記憶體,流量,電量等指標時,發現的企鵝很好用的工具。 備份至此,方便後期查閱 轉載自CSDN的文章:【騰訊開源】Android性能測試工具APT使用指南 原文URL http://www.csdn.net/article/2014-04-23/2819366-ten ...
  • android去掉滑動到頂部和底部的陰影 解釋一下listview用到的各個屬性 去除拖動時預設的帶顏色的背景: android:cacheColorHint="#00000000" 去除ListView滑到頂部和底部時邊緣的黑色陰影: android:fadingEdge="none" 去除下滑到 ...
  • 本文接著實現“確認密碼”功能,也即是用戶以前設置過密碼,現在只需要輸入確認密碼 本文地址:http://www.cnblogs.com/wuyudong/p/5940718.html,轉載請註明出處。 佈局文件和《Android 手機衛士--設置密碼對話框》中的佈局基本類似,所有copy一下,修改一 ...
  • 本文章向大家介紹phpmyadmin #2003 無法登錄 MySQL伺服器的解決方法,需要的碼農可以參考一下。 通過phpmyadmin連接mysql資料庫時提示:“2003 無法登錄 MySQL伺服器”。。。很明顯這是沒有啟動mysql服務,右擊我的電腦-管理-找到服務,找到mysql啟動一下, ...
  • 背景 背景 我們知道Azure Sql Database 可以降低運維成本、是一種Pass模式,有資源彈性設置,可以自由調整資源自動對應不同業務高峰(當然也可以降低費用成本),也方便項目後期的資源擴展,以及一些其他優點或特性,這就不一一列出。那麼資料庫開發工程師來說,操作Azure Sql Data ...
  • 一. 高水位(HWM)及其產生原因 High Water Mark,HWM) 是Oracle(Segment)級別的概念。在僅有DML(比如delete,insert)操作時,高水位線只會增長,不會降低。具體來說,由於程式使用的delete語句不回收使用過的空間,數據雖然刪除了,但是高水位線卻沒有降 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...