Re: [請益] 業界遇到這種bug該怎麼處理?

軟工

12110

之前在對岸做游戲server的 幹了10幾年
一點拙見

首先這個BUG還是要引起重視 要考慮到是不是自己寫的網路庫有問題
比如說windows的iocp 有沒有合理的處理了所有向上抛的事件與例外
也或者是 自己寫的無鎖緩衝有bug 導致丟包
以上所說 都屬於必需立即查出來的情況
我假設server間通訊也用到這套庫 那麽一旦往DB寫的數據丟失 屬於重大事故
停機維護的損失 以一個日活2000萬的項目 少說是百萬

往輕了說
也有可能是網路波動 導致TCP層收到了RST 清除了發送緩衝

總之 辦法就是全項目組一起Review code
得益於版本控制 可以在最近改動的相關code裏尋找蛛絲馬跡
這個情況下 其實就有點像是coding skill大比武了
基本功好的人 往往快別人幾步找到漏洞
升遷路上就會比較順遂

我記得有一次出版本 server運行幾個小時就崩 而且沒dump
不管API或是語言層面的函數都沒用 就是catch不到OOM
後來Review code 才發現有人在某類的Constructor向heap申請一塊不大不小的記憶體
但在成對的Destructor沒有釋放 導致Memory Leak 由於記憶體的碎片效應
最終申請不到足夠大的記憶體 從而發生了那個不知道在那層被攔截到的OOM Exception

總之 爲了讓自己半夜能睡得好 睡得香
一定要把基本功打好 才不會犯低級錯誤
大半夜被人從被窩裏挖起來 可是很難受的

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.220.72 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1665515939.A.976.html
xam1樓不過他的全項目組大概也就一個人... 10/12 07:58
lchcoding2樓有借有還,再借不難... 10/12 09:27
worcdlo3樓請教一下,你們一開始怎麼知道問題是oom 10/12 09:27
joshua52014樓運行到一半沒頭沒腦就壞了可以猜跟OOM有關 10/12 10:05
joshua52015樓也可以去看kernel log 10/12 10:06
joshua52016樓他文中也有寫在某個地方catch到OOM 10/12 10:06
labbat7樓鬼故事是沒有git svn版本控制 10/12 11:44
worcdlo8樓他文中好像是寫catch不到oom 10/12 13:01
hobnob9樓感謝分享 10/12 13:19
MoonCode10樓 10/12 13:43
jason22233311樓高手 推 10/12 18:29
ErcH92212樓不知道有沒有鬼故事能聽 10/12 23:44
viper970913樓推二樓 10/12 23:45
knme14樓 10/14 15:21