公司同事反映公司軟件特別卡,查詢幾百行的數(shù)據(jù)軟件經(jīng)常反應(yīng)半天才反應(yīng)過來,更多的時(shí)候是直接報(bào)錯(cuò),錯(cuò)得也很明顯,那就是內(nèi)存溢出!剛開始得知這個(gè)事情的時(shí)候,公司的程序員老趙還特地跑到同事電腦上看了看,結(jié)果說同事電腦內(nèi)存不夠用了,然后就沒管了。但是,接下來幾天,其他同事也說他們也有同樣情況,這讓我覺得問題不那么簡(jiǎn)單!
我一開始也以為是同事電腦內(nèi)存比較低導(dǎo)致的,這得說下我們公司的電腦是什么情況!
我們公司老板以前是在電腦城賣電腦的,在購買電腦這塊頗有心得,至少他是這么說的!
所以,我們公司除研發(fā)人員的電腦是根據(jù)需求配置的以外,其他同事的電腦都是老板通過電腦城朋友那拿過來的二手貨!主機(jī)加顯示器以及像鍵盤和鼠標(biāo)這樣的配件,打包下來總共不要2000塊錢一套!公司里面所有非研發(fā)人員的電腦都是這個(gè)貨色。
所以,公司的程序員老趙在聽說公司軟件報(bào)內(nèi)存溢出這個(gè)錯(cuò)后,并沒有細(xì)查就說同事電腦內(nèi)存不夠!但這也不能怪老趙,因?yàn)榫湍敲礈惽桑驗(yàn)殡娔X配置比較垃圾,同事的電腦的確內(nèi)存不夠了!
但是,你要說一個(gè)同事電腦是這樣也就算了,如果所有同事電腦都這樣,那這其中肯定有貓膩!
老趙其實(shí)不算是一個(gè)心思縝密的人,他一般只解決眼前問題,他的想法就是:“眼下問題解決就行,你別打擾我敲代碼!”
當(dāng)我意識(shí)到事情不簡(jiǎn)單以后,我也在自己電腦上按照其他同事的操作又操作了一遍軟件,發(fā)現(xiàn)并沒有出現(xiàn)卡的現(xiàn)象,也沒報(bào)內(nèi)存溢出!
因?yàn)檠邪l(fā)人員使用的是測(cè)試環(huán)境,所以,我想是不是測(cè)試環(huán)境重現(xiàn)不了這個(gè)問題,于是乎,我將軟件所有配置都改成了正式環(huán)境的參數(shù)去測(cè)試。
果不其然,我電腦上的軟件也報(bào)了內(nèi)存溢出這個(gè)錯(cuò)誤!
要知道,我電腦的內(nèi)存可是16G,如果16G內(nèi)存的電腦使用我們的軟件都能報(bào)內(nèi)存溢出,那至少說明了我們軟件在設(shè)計(jì)上就不合理!
為了查清內(nèi)存溢出的真相,我開始了調(diào)試,很快調(diào)試結(jié)果就出來了!
我發(fā)現(xiàn),報(bào)內(nèi)存溢出的并不是軟件客戶端所在的電腦,而是服務(wù)器!軟件只是將服務(wù)器錯(cuò)誤原封不動(dòng)的顯示在前端了而已!也就是說,其實(shí)我的電腦內(nèi)存并未溢出,實(shí)際上內(nèi)存溢出的是服務(wù)器!
于是,我登錄進(jìn)了服務(wù)器,一看任務(wù)管理器,果然內(nèi)存已經(jīng)飆滿了!
內(nèi)存飆滿,會(huì)導(dǎo)致軟件在查詢數(shù)據(jù)庫的時(shí)候因?yàn)閿?shù)據(jù)量太大導(dǎo)致內(nèi)存不夠用,從而報(bào)內(nèi)存溢出錯(cuò)誤!
原因知道了,我就得查導(dǎo)致服務(wù)器內(nèi)存溢出的原因!通過分析,我發(fā)現(xiàn)導(dǎo)致服務(wù)器內(nèi)存溢出的竟然是一個(gè).txt的文本文件!
我“順著網(wǎng)線”就找到了這個(gè).txt文件所在目錄,發(fā)現(xiàn)它竟然在我們軟件服務(wù)器端的根目錄的Log文件夾下!
原來,這個(gè).txt文件是個(gè)日志文件!
一個(gè)日志文件怎么會(huì)那么大呢?剛開始我還沒反應(yīng)過來,于是就想雙擊打開這個(gè)文件,看看里面到底有什么,結(jié)果雙擊后,整個(gè)文件夾都“假死”了!
之后,我不得不重啟了文件管理器,右鍵查看了軒這個(gè).txt文件的大小,竟然發(fā)現(xiàn)有十幾G!
我的天,這個(gè).txt文件怎么會(huì)那么大?
我當(dāng)時(shí)就立馬反應(yīng)了過來,一看Log文件夾除了這個(gè)文件以外沒有其他文件,我就知道發(fā)生了什么事!
很簡(jiǎn)單,那就是我們軟件服務(wù)端的所有日志都寫在了這一個(gè).txt文件中!
此時(shí),我找到了老趙,因?yàn)榉?wù)端的日志模塊當(dāng)初我記得是老趙負(fù)責(zé)的,而老趙是個(gè)有二十幾年編程經(jīng)驗(yàn)的老程序員了,我沒想到他會(huì)這么干!
我旁敲側(cè)擊地告訴老趙,說他所有日志都寫在一個(gè).txt文件中,隨著時(shí)間越來越久,服務(wù)器內(nèi)存會(huì)被撐爆的,因?yàn)槲覀兎?wù)器端寫日志還是挺頻繁的!
老趙聽我這么說,意識(shí)到了問題所在,我以為老趙會(huì)去改服務(wù)端日志讀寫的代碼,將日志文件按照以天為單位存儲(chǔ)。
結(jié)果您猜怎么著?老趙反一個(gè)刪除,就把那個(gè)十幾G的.txt文件給刪了!然后辦公區(qū)喊了一句:“大家再試試,看看卡不卡了!”
隨后,老趙笑呵呵得跟我說:“估計(jì)他們不卡了!”
我以為老趙只是臨時(shí)這么干,于是就跟老趙說:“這也算暫時(shí)解決了問題吧!”
結(jié)果老趙接下來一句話,讓我意識(shí)到老趙似乎并沒有改代碼的意愿!
老趙跟我說:“以后每隔幾天就登錄服務(wù)器看看,然后把日志文件刪了,不然下次還會(huì)卡!”
我驚訝地問:“你這不改啊?”
老趙無所謂地說:“這改啥,就這么跑唄!”
結(jié)語
老趙說得輕描淡寫的,感覺他也不是說著玩的,就是不準(zhǔn)備改,我雖然沒看日志讀寫的代碼,但我感覺蓋起來也不會(huì)麻煩到哪去!
最后,我只能尷尬地走開了!我不知道老趙此舉到底是為了什么,是真的沒有責(zé)任心,還是覺得我多管閑事,給他添麻煩了?如果真是這樣,我可就真無話可說了!如果是覺得我多管閑事,放著這么明顯的問題不管,那就真的有點(diǎn)說不過去了!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.