最近筆者所在學(xué)校出現(xiàn)上網(wǎng)時(shí)斷時(shí)續(xù),故障時(shí)間不定的情況,即設(shè)備內(nèi)網(wǎng)用戶出現(xiàn)不定時(shí)斷網(wǎng)情況,斷網(wǎng)一段時(shí)間后恢復(fù)。
我校采購(gòu)的是一臺(tái)銳捷RG-EG1000m的出口設(shè)備,主要采用了路由模式,使用了內(nèi)容和流量審計(jì)功能,對(duì)學(xué)生訪問(wèn)網(wǎng)站做了些限制,還使用了流控功能,對(duì)網(wǎng)速進(jìn)行了合理分配。
筆者對(duì)接入交換機(jī)和匯聚交換機(jī)進(jìn)行連接性檢查,未發(fā)現(xiàn)問(wèn)題。繼續(xù)檢查網(wǎng)關(guān)設(shè)備,Web界 面 查看后發(fā)現(xiàn)設(shè)備提示內(nèi)存不足(如圖 1)。
設(shè)備開(kāi)機(jī)時(shí)內(nèi)存使用率在60%左右,但當(dāng)天下午18點(diǎn)后,查看內(nèi)存使用率,達(dá)到98%以上。設(shè)備出現(xiàn)內(nèi)存持續(xù)升高無(wú)法下降,最終導(dǎo)致轉(zhuǎn)發(fā)中斷。重啟后可恢復(fù),一段時(shí)間后會(huì)再次出現(xiàn)故障(如圖2 )。
采用telnet方式,進(jìn)入管理模式,使用show memory命令,查看設(shè)備內(nèi)存達(dá)到98%(如圖3)。設(shè)備性能有回收機(jī)制,一旦出現(xiàn)內(nèi)存占滿,會(huì)回收一部分內(nèi)存,回收時(shí),設(shè)備配置的上網(wǎng)用戶將會(huì)被重置。硬盤(pán)驅(qū)動(dòng)寫(xiě)不下去,流量審計(jì)不斷的產(chǎn)生數(shù)據(jù)往數(shù)據(jù)庫(kù)寫(xiě),然后數(shù)據(jù)庫(kù)就不斷的膨脹,之后導(dǎo)致的內(nèi)存占滿。內(nèi)存回調(diào)就會(huì)讓內(nèi)部網(wǎng)絡(luò)暫時(shí)無(wú)法通過(guò),內(nèi)部用戶無(wú)法上網(wǎng)。
圖1 設(shè)備提示內(nèi)存不足
圖2 出現(xiàn)不定時(shí)斷網(wǎng)現(xiàn)象
圖3 設(shè)備內(nèi)存達(dá)到98%
經(jīng)過(guò)和廠家溝通,故障根本原因是硬盤(pán)出現(xiàn)故障,無(wú)法寫(xiě)。由于打開(kāi)了流量審計(jì)功能,該功需要會(huì)按周、月匯總呈現(xiàn)流量數(shù)據(jù),所以需要將數(shù)據(jù)記錄在硬盤(pán)內(nèi),才能整理出周報(bào)和月報(bào)。
當(dāng)硬盤(pán)出現(xiàn)故障,無(wú)法寫(xiě)的時(shí)候,該功能錯(cuò)誤地將數(shù)據(jù)寫(xiě)到內(nèi)存,從而導(dǎo)致內(nèi)存會(huì)持續(xù)消耗且無(wú)法釋放,最終導(dǎo)致內(nèi)存完全消耗,轉(zhuǎn)發(fā)中斷。
在EG系統(tǒng)中,硬盤(pán)文件系統(tǒng)采用日志模式,文件系統(tǒng)所有數(shù)據(jù)和元數(shù)據(jù)的改變都被記入日志。這種模式減少了丟失每個(gè)文件的機(jī)會(huì),但需要很多額外的磁盤(pán)訪問(wèn)。例如,當(dāng)一個(gè)新文件被創(chuàng)建時(shí),它的所有數(shù)據(jù)塊都必須復(fù)制一份作為日志記錄。這是最安全但最慢的日志模式。
當(dāng)設(shè)備由于配置變動(dòng)或者其他原因?qū)е乱恍┠K頻繁修改硬盤(pán)文件(例如打開(kāi)文件并寫(xiě)入業(yè)務(wù)數(shù)據(jù))過(guò)程中,如果使用TRUNC參數(shù)打開(kāi),則會(huì)保持被截?cái)嗟奈募膬?nèi)容日志,這會(huì)帶來(lái)對(duì)應(yīng)的緩存上升。當(dāng)修改文件的模塊比較多(我們的系統(tǒng)中使用TRUNC參數(shù)的模塊比較多,這也是大家習(xí)慣的一種操作方式),或者修改比較頻繁的時(shí)候,文件系統(tǒng)緩存就會(huì)逐漸上升。
Linux系統(tǒng)回收內(nèi)存的水線設(shè)置在min_free_kbytes中,當(dāng)剩余內(nèi)存小于這個(gè)文件中的數(shù)值時(shí),kswapd線程開(kāi)始自動(dòng)釋放內(nèi)存。這個(gè)水線值正常情況下設(shè)置比較高(值比較?。?,為的是有足夠的緩存,不去釋放掉可以維持IO性能,因此在設(shè)備界面上看到的內(nèi)存利用率會(huì)很高,實(shí)際上大部分是緩存。
以往遇到此類(lèi)問(wèn)題重啟就可以解決,但是此次故障重啟不會(huì)解決根本的問(wèn)題,根本的問(wèn)題是硬盤(pán)驅(qū)動(dòng)寫(xiě)入出現(xiàn)問(wèn)題。設(shè)備運(yùn)行產(chǎn)生的數(shù)據(jù)不斷的寫(xiě)入數(shù)據(jù)庫(kù),導(dǎo)致內(nèi)存增高,轉(zhuǎn)發(fā)中斷。
類(lèi)比PC機(jī)的硬盤(pán),內(nèi)部壞塊和小文件多了會(huì)導(dǎo)致硬盤(pán)變慢。硬盤(pán)變慢到一定的閾值,會(huì)出現(xiàn)數(shù)據(jù)無(wú)法寫(xiě)入,但還有新的數(shù)據(jù)累計(jì)增大,硬盤(pán)無(wú)法放入,會(huì)向內(nèi)存中存放,不修理的話,斷網(wǎng)的問(wèn)題無(wú)法根治。建議設(shè)備常做健康檢查,出現(xiàn)問(wèn)題可以及時(shí)送修。