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

2022-08-22 22:45:09 字數 663 閱讀 4607

第一次:

top -c 檢視一下程序id : 30850

pstack 30850 檢視一下當前堆疊的資訊,  刷一閃, 滿屏std的東西~~

乙個乙個執行緒慢慢看下來, 發現**最終在: strtext.replace(size, strlen(pszsrctext), pszdesttext); 

再往上看一層 strreplace(text, "'", "''"), 字串替換觸發死迴圈, 解決~

第二次:

top -c 檢視程序id, 118947

執行緒資訊

thread 7 (thread 0x7f3c5af0c700 (lwp 118990)):

#0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.s:135

thread 4 (thread 0x7f3c594f6700 (lwp 119003)):

#0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.s:135

執行緒4和7死鎖, 把這個鎖的占用者找出來, 發現是執行緒5出觸發了網路訊息回環占用了鎖, bug導致一直釋放不了

解決~希望不要有第三次~

伺服器CPU100 的排查日誌

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

c 遊戲伺服器框架

2 muduo是乙個基於 reactor 模式的 c 網路庫 3 boost asio 是乙個非同步的網路框架 官網 第三方教程 4 libevent 官網 5 ace是乙個很成熟的中介軟體產品,為自適應通訊環境,但它過於巨集大,一堆的設計模式,架構是一層又一層,對初學者來說,有點困難。pss開源框...

記一次遊戲伺服器結構優化調整

上週遊戲伺服器被ddos攻擊了,伺服器頻寬瞬間拉滿導致全部伺服器宕機。於是對我們現有的伺服器結構做了些優化和調整以應對攻擊。先說說以前的伺服器結構如圖所示 以上只有乙個接入伺服器充當中轉的作用。如果接入伺服器宕機了,基本上全服都掛了。接入伺服器的access程序會判斷如果是協議格式不正確的連線會主動...