欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL Server內(nèi)存遭遇操作系統(tǒng)進(jìn)程壓榨案例分析

 更新時(shí)間:2014年03月14日 15:12:04   投稿:mdxy-dxy  
最近一臺(tái)DB服務(wù)器偶爾出現(xiàn)CPU報(bào)警,我的郵件報(bào)警閾值設(shè)置的是15%,開(kāi)始時(shí)沒(méi)當(dāng)回事,以為是有什么統(tǒng)計(jì)類(lèi)的查詢(xún),后來(lái)越來(lái)越頻繁

場(chǎng)景:

  最近一臺(tái)DB服務(wù)器偶爾出現(xiàn)CPU報(bào)警,我的郵件報(bào)警閾(請(qǐng)讀yù)值設(shè)置的是15%,開(kāi)始時(shí)沒(méi)當(dāng)回事,以為是有什么統(tǒng)計(jì)類(lèi)的查詢(xún),后來(lái)越來(lái)越頻繁。

探索:

  我決定來(lái)查一下,究竟是什么在作怪,我排查的順序如下:

  1、首先打開(kāi)Cacti監(jiān)控,發(fā)現(xiàn)最近CPU均值在某天之后驟然上升,并且可以看到System\Processor Queue Length 和 sqlservr\%ProcessorTime 也在顯著的變化。

  

  2、從最容易入手的低效SQL開(kāi)始,考慮是不是最近業(yè)務(wù)做了什么修改?連接到該SQL實(shí)例,打開(kāi)活動(dòng)監(jiān)視器,展開(kāi)“最近耗費(fèi)大量資源的查詢(xún)”,并CPU時(shí)間倒序,在這里并未發(fā)現(xiàn)有即時(shí)的耗費(fèi)資源的查詢(xún)。據(jù)個(gè)人經(jīng)驗(yàn),這里的值如果是4位數(shù),分鐘內(nèi)執(zhí)行次數(shù)3位數(shù),一般的服務(wù)器CPU大概就10%以上,如果cpu時(shí)間那里是5位數(shù),且分鐘內(nèi)執(zhí)行次數(shù)也很高,幾百次以上,那CPU一般就會(huì)不淡定了。圖片僅為演示

  

  3、沒(méi)有耗資源的SQL,這是DBA最不愿意看到的結(jié)果,因?yàn)橐苍S,SQL Server受到了來(lái)自?xún)?nèi)部或者外部的壓力,使得自己花費(fèi)了過(guò)多的時(shí)間去處理與操作系統(tǒng)的溝通去了。SQL Server常見(jiàn)的非查詢(xún)低效類(lèi)的性能問(wèn)題,絕大多數(shù)都來(lái)自于內(nèi)存或者硬盤(pán),而這兩者有的時(shí)候需要同時(shí)研究對(duì)比基線(xiàn),才能確定誰(shuí)是因,誰(shuí)是果。在這里,我們首先查看SQL Server內(nèi)存使用情況,當(dāng)打開(kāi)性能計(jì)數(shù)器時(shí),我和我的小伙伴們都驚呆了……安裝了64G內(nèi)存的數(shù)據(jù)庫(kù),SQL Server的TargetMemory僅有500多兆!這其中StolenPage還占用了200多兆,數(shù)據(jù)庫(kù)DataPage僅有200多兆的內(nèi)存可供使用,Oh,Shit!雖然我很不想用“去哪了”這三個(gè)字,但是“我的內(nèi)存去哪了“?同時(shí)我們也注意到PageLifeExpectancy值只有26(一個(gè)內(nèi)存充足的服務(wù)器,這個(gè)值至少應(yīng)該是上W的),而很早之前我們津津樂(lè)道的"Cache Hit Ration"卻仍然保持一個(gè)比較高的水準(zhǔn)98! 這個(gè)案例告訴我們,緩存命中率這個(gè)性能計(jì)數(shù)器很多時(shí)候說(shuō)明不了什么問(wèn)題。

  

  4、OK,既然這樣,是誰(shuí)占用了本該屬于我親愛(ài)的SQL Server的內(nèi)存呢?我們繼續(xù),打開(kāi)Wiindows任務(wù)管理,選定進(jìn)程選項(xiàng)卡,點(diǎn)擊顯示所有用戶(hù)進(jìn)程,發(fā)現(xiàn)svchost.exe占用了絕大多數(shù)的60G內(nèi)存!

  

  5、那svchost.exe又是個(gè)什么東西呢?我們下面就用到ProcessMonitor這個(gè)工具了,打開(kāi)后自動(dòng)加載所有Wiindows進(jìn)程,按內(nèi)存排序后,鼠標(biāo)移至svchost.exe進(jìn)程上,顯示為Remote Registry服務(wù)。

  

  果然:Assume that you query performance counters on a remote computer by using an application on a computer that is running Windows 7 or Windows Server 2008 R2. In this situation, the memory usage of the Remote     Registry service on the local computer increases until the available memory is exhausted.

解決方法:

  1、重啟服務(wù)器,安裝hotfix

  2、因?yàn)橹貑⒎?wù)器會(huì)影響到業(yè)務(wù),所以我在想重啟RemoteRegistry服務(wù),應(yīng)該也能暫時(shí)解決問(wèn)題,這個(gè)bug應(yīng)該是在某種固定情景下發(fā)生的。

  隨后,在合適的時(shí)間,我重啟了這個(gè)服務(wù),SQL Server的TargetMemory重新恢復(fù)到60多G,CPU也正常了,目前為止該問(wèn)題未再發(fā)生。

后續(xù)跟進(jìn):

  DBA的工作,說(shuō)難也難,說(shuō)容易也容易,發(fā)現(xiàn)問(wèn)題,解決問(wèn)題還不夠,我們還要意識(shí)到自己的欠缺,在本案例中,我之前并沒(méi)有建立起SQL Server內(nèi)存的監(jiān)控,所以沒(méi)有在第一時(shí)間就發(fā)現(xiàn)病情的嚴(yán)重性,好在該服務(wù)器并未承擔(dān)重要業(yè)務(wù),否則后果不堪設(shè)想,說(shuō)不定早就崩潰過(guò)了,后怕之處在于,如果崩潰了,自然要重啟服務(wù)器,到那個(gè)時(shí)候,我們連第一現(xiàn)場(chǎng)都沒(méi)有,當(dāng)leader問(wèn)起來(lái),我又該使勁撓頭了。

  該事件之后,我建立起了SQL Server內(nèi)存的監(jiān)控,1天后,我從新的監(jiān)控?cái)?shù)據(jù)中,又發(fā)現(xiàn)了一臺(tái)服務(wù)器出現(xiàn)相同的問(wèn)題!我很慶幸,不是慶幸服務(wù)器沒(méi)宕機(jī),而是慶幸我做對(duì)了。

  附一張內(nèi)存監(jiān)控圖,可以看到服務(wù)重啟之后,SQL Server的Total Pages一直在上升,并逐漸穩(wěn)定,Page life expectancy也在變得越來(lái)越大,CPU也能指示病癥已消除,我很欣慰。

  

  

總結(jié):

  服務(wù)器在出現(xiàn)性能問(wèn)題前,大部分是提前有一些征兆的,尤其是內(nèi)存泄露,因?yàn)閮?nèi)存是一點(diǎn)點(diǎn)被壓榨掉的,最后到達(dá)一個(gè)極限時(shí),SQL Server就會(huì)突然Crash掉,然后只留給你一個(gè)dump,微軟就笑了。有經(jīng)驗(yàn)的大夫應(yīng)該從日常的腰酸背痛中看出一些端倪,然后進(jìn)一步分析,提前預(yù)知重大疾病的發(fā)生,這就是DBA的價(jià)值。這個(gè)案例,告訴我,重視服務(wù)器異常的細(xì)節(jié)變化,才能做到防患于未然。

相關(guān)文章

  • sqlserver數(shù)據(jù)庫(kù)優(yōu)化解析(圖文剖析)

    sqlserver數(shù)據(jù)庫(kù)優(yōu)化解析(圖文剖析)

    這篇文章主要介紹了sql數(shù)據(jù)庫(kù)查詢(xún)數(shù)據(jù)慢,針對(duì)如何優(yōu)化sqlserver數(shù)據(jù)庫(kù)做介紹,需要的朋友可以參考下
    2015-07-07
  • SQL?Server中如何給表添加注釋詳解

    SQL?Server中如何給表添加注釋詳解

    這篇文章主要給大家介紹了關(guān)于SQL?Server中如何給表添加注釋的相關(guān)資料,在SQL Server數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)中,可以在數(shù)據(jù)庫(kù)表結(jié)構(gòu)創(chuàng)建時(shí)為它們添加注釋,以便更好地描述其作用、含義或其他相關(guān)信息,需要的朋友可以參考下
    2023-11-11
  • sql?server導(dǎo)入、導(dǎo)出數(shù)據(jù)庫(kù)詳細(xì)步驟記錄

    sql?server導(dǎo)入、導(dǎo)出數(shù)據(jù)庫(kù)詳細(xì)步驟記錄

    這篇文章主要給大家介紹了關(guān)于sql?server導(dǎo)入、導(dǎo)出數(shù)據(jù)庫(kù)的相關(guān)資料,SQL?Server?導(dǎo)入和導(dǎo)出向?qū)且环N使你可以將數(shù)據(jù)從源復(fù)制到目標(biāo)的工具,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • SQL Server 跨庫(kù)同步數(shù)據(jù)

    SQL Server 跨庫(kù)同步數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了SQL Server 跨庫(kù)同步數(shù)據(jù)的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 解析SQLServer任意列之間的聚合

    解析SQLServer任意列之間的聚合

    這里介紹一個(gè)通過(guò)xml合并列并轉(zhuǎn)為行集后直接用聚合函數(shù)求值的方法,測(cè)試用例和代碼如下
    2013-06-06
  • SQL Server使用Merge語(yǔ)句當(dāng)源表數(shù)據(jù)集為空時(shí),無(wú)法進(jìn)行查詢(xún)的問(wèn)題

    SQL Server使用Merge語(yǔ)句當(dāng)源表數(shù)據(jù)集為空時(shí),無(wú)法進(jìn)行查詢(xún)的問(wèn)題

    今天使用Merge語(yǔ)句時(shí)遇到了一個(gè)問(wèn)題,當(dāng)源表數(shù)據(jù)集為空時(shí),merge就不工作了。
    2009-07-07
  • 強(qiáng)制SQL Server執(zhí)行計(jì)劃使用并行提升在復(fù)雜查詢(xún)語(yǔ)句下的性能

    強(qiáng)制SQL Server執(zhí)行計(jì)劃使用并行提升在復(fù)雜查詢(xún)語(yǔ)句下的性能

    最近在給一個(gè)客戶(hù)做調(diào)優(yōu)的時(shí)候發(fā)現(xiàn)一個(gè)很有意思的現(xiàn)象,對(duì)于一個(gè)復(fù)雜查詢(xún)(涉及12個(gè)表)建立必要的索引后,語(yǔ)句使用的IO急劇下降,但執(zhí)行時(shí)間不降反升,由原來(lái)的8秒升到20秒。
    2014-07-07
  • 提升SQL Server速度 整理索引碎片

    提升SQL Server速度 整理索引碎片

    數(shù)據(jù)庫(kù)表A有十萬(wàn)條記錄,查詢(xún)速度本來(lái)還可以,但導(dǎo)入一千條數(shù)據(jù)后,問(wèn)題出現(xiàn)了。當(dāng)選擇的數(shù)據(jù)在原十萬(wàn)條記錄之間時(shí),速度還是挺快的;但當(dāng)選擇的數(shù)據(jù)在這一千條數(shù)據(jù)之間時(shí),速度變得奇慢
    2009-07-07
  • 詳解SQL報(bào)錯(cuò)盲注

    詳解SQL報(bào)錯(cuò)盲注

    這篇文章主要介紹了SQL報(bào)錯(cuò)盲注詳解,包括SQL報(bào)錯(cuò)函數(shù),SQL報(bào)錯(cuò)盲注payload構(gòu)造,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • SQLSERVER 語(yǔ)句交錯(cuò)引發(fā)的死鎖問(wèn)題案例詳解

    SQLSERVER 語(yǔ)句交錯(cuò)引發(fā)的死鎖問(wèn)題案例詳解

    這篇文章主要介紹了SQLSERVER 語(yǔ)句交錯(cuò)引發(fā)的死鎖研究,要解決死鎖問(wèn)題,個(gè)人感覺(jué)需要非常熟知各種隔離級(jí)別,尤其是 可提交讀 模式下的 CURD 加解鎖過(guò)程,這一篇我們就來(lái)好好聊一聊
    2023-02-02

最新評(píng)論