企業(yè)級管理軟件的web應(yīng)用和普通的web站點(diǎn),B2C等有很大的不同。內(nèi)存泄露的檢查點(diǎn)也會不同。
檢查點(diǎn)一:什么信息需要緩存在session中在各種管理軟件中,最常見的是把當(dāng)前用戶的權(quán)限等信息緩存在session中。好啦,問題來了,如果系統(tǒng)的權(quán)限很復(fù)雜:操作權(quán)限,管理權(quán)限,數(shù)據(jù)權(quán)限,字段權(quán)限,巴拉巴拉一大堆的話,那么把這大堆信息放到session中,一個用戶就要占掉20M+的內(nèi)存。訪問用戶一多,系統(tǒng)就掛了。而且管理軟件一般都會把session的timeout設(shè)置的很多,除非用戶手動的注銷,否則即使木有操作也會吊在系統(tǒng)上很久。因此要評估此部分的設(shè)計(jì),把不必要的或者訪問不頻繁的數(shù)據(jù)拖出session,放過session TA老人家吧。
檢查點(diǎn)二:session數(shù)據(jù)傳遞
管理系統(tǒng)很多都會采用幀結(jié)構(gòu),常見的上幀查詢條件,下幀顯示結(jié)果。問題來了,采用幀結(jié)構(gòu)如果傳遞數(shù)據(jù)到頁面,就要通過session。開發(fā)的時候,一般都是后臺開發(fā)負(fù)責(zé)業(yè)務(wù)邏輯,前臺開發(fā)負(fù)責(zé)數(shù)據(jù)展示。前后開發(fā)一脫節(jié),后臺向前臺傳遞了一個集合對象,前臺木有用,也不管清除。這堆垃圾數(shù)據(jù)全部都駐留內(nèi)存,所以系統(tǒng)跑著跑著就宕機(jī)了。
檢查點(diǎn)三:不要試圖通過頁面來實(shí)現(xiàn)分頁
管理系統(tǒng)由于業(yè)務(wù)復(fù)雜性等要求,大家都把注意力首先放在實(shí)現(xiàn)業(yè)務(wù)功能上,有時對數(shù)據(jù)的量級不是很關(guān)注。有的系統(tǒng)剛開始好好的,用著用著不不爽了,原因就是數(shù)據(jù)量一增加,很多相關(guān)的問題都會暴露出來。最常見的是分頁處理,先把數(shù)據(jù)都取過來,在前臺分頁顯示。千萬不要這樣,100條數(shù)據(jù)木有問題,1000條,10000條呢,結(jié)果就是前臺很忙,然后就掛掉了。