客戶伺服器CPU100 無奈的改表名

2021-10-23 19:50:43 字數 2587 閱讀 4587

快下班了,客服的乙個小朋友,跑來找我救命,說現在服務卡爆了,cpu一直100%

開啟頁面乙個複雜查詢的地方,一直loadding......等了27秒,正常一般1秒左右,看了下活動監視器,等待型別基本是latch和lock,以為是有死鎖了,檢視阻塞,一直在變化,沒有固定的阻塞,那就不是死鎖了.

想著之前遇到過的乙個情況,有大量的sql在反覆執行,也是這種症狀,檢視了下快取計畫,按照cpu和執行次數倒序檢視。果然最前面幾個一直在瘋狂執行,f5一下,就多了10多次查詢,當時已經2k多次,找到相關語句和表,然後問那小盆友,是什麼程式在執行,他說是我另外乙個同事寫的,我也不清楚到底是什麼,就讓他先把程序殺了,然後我們前後上伺服器找了一圈也沒找到,反正一直還在執行

(@p__linq__0 nvarchar(4000),@p__linq__1 uniqueidentifier,@p__linq__2 datetime2(7))

select case when ( exists (select 1 as [c1] from [dbo].[***xx]

as [extent1] where ([extent1].[call_id] = @p__linq__0) and

([extent1].[employeeid] = @p__linq__1) and ([extent1].[release_time] = @p__linq__2) ))

then cast(1 as bit) when ( not exists (select 1 as [c1] from [dbo].[***xx] as

[extent2] where ([extent2].[call_id] = @p__linq__0) and ([extent2].[employeeid] =

@p__linq__1) and ([extent2].[release_time] = @p__linq__2) )) then cast(0 as bit) end as

[c1] from ( select 1 as x ) as [singlerowtable1]

最後只有放大招,把錶名字改了,讓程式報錯,剛改掉,看了下活動監視器,一切正常了。最後執行了6661次

好吧,明天再來研究問題。。。

今天一早找到問題的地方了。有乙個新增方法前,加的乙個判斷:

嘗試執行,檢視下任務計畫

掃瞄計數 5,邏輯讀取 20728 次,物理讀取 0 次,預讀 19387 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0 次。

並行,索引掃瞄,每次500多萬,又連著在執行,尼瑪不卡死有鬼了。

create nonclustered index [ix_callid_relesetime_empid] on [dbo].[***x]

( [call_id] asc,

[release_time] asc,

[employeeid] asc

)

新增索引,小盆友立馬就來訊息了,大哥你幹了什麼?瞬間都不卡了。。。順便給他講解了下,以後別找我了。。。哥們也是小

伺服器CPU100 的排查日誌

早上發現訪問伺服器非常慢,趕緊登入控制台,原來cpu正在滿負荷執行。一 ssh到伺服器,先使用top命令確定一下當前的伺服器負載 top發現 mysql 的 cpu 占用已經達到了 375 因為是4核心 那就初步確定是 mysql 的問題了。二 看看哪些sql造成的cpu占用過高 執行一條語句,用來...

記二次C 遊戲伺服器CPU 100 解決過程

第一次 top c 檢視一下程序id 30850 pstack 30850 檢視一下當前堆疊的資訊,刷一閃,滿屏std的東西 乙個乙個執行緒慢慢看下來,發現 最終在 strtext.replace size,strlen pszsrctext pszdesttext 再往上看一層 strreplac...

MySQL伺服器CPU跑滿100 的情況分析

我們的原則是,重啟能解決的,絕對不開client cpu100 通常情況下就是有慢sql造成的,這裡的慢sql包括全表掃瞄,掃瞄資料量過大,記憶體排序,磁碟排序,鎖爭用等待等.一般表現現象sql執行狀態為 sending data,copying to tmp table,copying to tm...