周三一早,王辰剛到公司,就被組里的程序員小李堵在了門口。
“辰哥,出事了!”小李臉色發(fā)白,“訂單系統(tǒng)昨晚又崩了,凌晨的批量任務(wù)全部失敗?!?/p>
王辰心里一沉。這個(gè)遺留系統(tǒng)就像個(gè)定時(shí)炸彈,用的是十年前的架構(gòu),代碼臃腫得像團(tuán)亂麻。
“查到原因了嗎?”
“好像是數(shù)據(jù)庫(kù)鎖表。。?!毙±罡觳阶呦蜣k公區(qū),“但最麻煩的是,日志系統(tǒng)也一起掛了,現(xiàn)在連錯(cuò)誤堆棧都看不到?!?/p>
辦公區(qū)里彌漫著低氣壓。幾個(gè)程序員頂著黑眼圈,顯然熬了通宵。
王辰打開(kāi)終端,嘗試連接測(cè)試環(huán)境。命令行滾動(dòng)著紅色的錯(cuò)誤信息,最后停在一個(gè)數(shù)據(jù)庫(kù)連接超時(shí)的提示上。
“把昨晚的監(jiān)控調(diào)出來(lái)。”王辰松開(kāi)鼠標(biāo),“我要看資源使用情況?!?/p>
監(jiān)控圖表顯示,內(nèi)存使用率在凌晨?jī)牲c(diǎn)達(dá)到峰值,然后像懸崖一樣跌落——典型的服務(wù)崩潰特征。
“又是那個(gè)老問(wèn)題?!蓖醭饺嗔巳嗝夹?,“ORM框架的懶加載配上N+1查詢,每次批量處理都在生成上萬(wàn)條SQL?!?/p>
組里最資深的張工嘆了口氣:“這技術(shù)債欠了五年了,現(xiàn)在要還,得把核心模塊重寫。”
“業(yè)務(wù)方能給多少時(shí)間?”王辰問(wèn)。
“最多三天。”項(xiàng)目經(jīng)理老劉推門進(jìn)來(lái),臉色難看,“財(cái)務(wù)部已經(jīng)炸鍋了,說(shuō)影響了月底結(jié)算。”
王辰看著滿屏的報(bào)錯(cuò)日志。三天重寫核心模塊?簡(jiǎn)直是天方夜譚。
“我先寫個(gè)臨時(shí)補(bǔ)丁。”他拉過(guò)鍵盤,“把最耗資源的幾個(gè)查詢改寫成存儲(chǔ)過(guò)程,至少保證今晚的批量任務(wù)能跑?!?/p>
手指在鍵盤上飛舞,王辰突然想起天眼系統(tǒng)。要是這系統(tǒng)能預(yù)知代碼bug該多好,可惜它只看得到K線圖。
(媽的,早知道當(dāng)年就該選金融專業(yè)。)
中午,團(tuán)隊(duì)叫了外賣,但沒(méi)人有胃口吃飯。王辰一邊啃著三明治,一邊review剛寫的存儲(chǔ)過(guò)程。
“辰哥,”小李湊過(guò)來(lái)小聲說(shuō),“聽(tīng)說(shuō)馮總那邊在自研分布式架構(gòu),我們要不要。。?!?/p>
“遠(yuǎn)水救不了近火?!蓖醭酱驍嗨?,“先把眼前的火撲滅再說(shuō)?!?/p>
下午四點(diǎn),臨時(shí)補(bǔ)丁部署到測(cè)試環(huán)境。王辰盯著監(jiān)控屏幕,看著批量任務(wù)緩慢但穩(wěn)定地推進(jìn)。
“CPU使用率還是太高?!睆埞ぶ钢O(jiān)控圖,“峰值到85%了?!?/p>
“總比崩掉強(qiáng)?!蓖醭娇戳搜蹠r(shí)間,“先上線,明天再優(yōu)化?!?/p>
下班時(shí)已是晚上八點(diǎn)。王辰拖著疲憊的身子走出辦公樓,手機(jī)上有兩個(gè)未接來(lái)電,都是郭慧的。
他回?fù)苓^(guò)去:“今晚加班,剛忙完?!?/p>
電話那頭沉默片刻:“吃飯了嗎?”
“吃了外賣?!?/p>
“我給你留了湯?!惫鄣穆曇羧岷拖聛?lái),“回來(lái)熱給你喝?!?/p>
掛掉電話,王辰抬頭看著辦公樓里零星的燈光。這一刻,他忽然理解了那些基金經(jīng)理——在K線圖背后,每個(gè)人都有一地雞毛要收拾。
喜歡金融帝國(guó)之股神歸來(lái)請(qǐng)大家收藏:()金融帝國(guó)之股神歸來(lái)