有一些程序在運(yùn)行過程中,會(huì)頻繁申請(qǐng)和釋放內(nèi)存,例如Oracle 的Listener連接程序在使用Dedicated設(shè)置,并且連接屬于短連接的情況下,會(huì)不斷建立新連接,申請(qǐng)內(nèi)存空間,完成客戶端SQL請(qǐng)求,然后釋放內(nèi)存,退出。當(dāng)系統(tǒng)繁忙的時(shí)候,表象就是系統(tǒng)建立很多新進(jìn)程,進(jìn)程號(hào)不斷變化,同時(shí)有大量的sr和fr,而且fr與sr幾乎相等(在系統(tǒng)內(nèi)存很多的情況下,否則fr一般只有1/6-1/4sr大小,甚至更少。這說明檢索了4-6塊的物理內(nèi)存,才發(fā)現(xiàn)一塊內(nèi)存可以釋放)。這種情況下,即使系統(tǒng)有足夠的內(nèi)存進(jìn)行調(diào)度,也會(huì)由于系統(tǒng)浪費(fèi)了大量的CPU資源用于內(nèi)存數(shù)據(jù)檢索,而導(dǎo)致系統(tǒng)運(yùn)行緩慢。解決方式是通過Oracle設(shè)置將短連接類型變成長(zhǎng)連接,例如設(shè)置shared server/service;延長(zhǎng)連接程序的空閑等待時(shí)間,甚至更改客戶端的工作方式,避免不必要的內(nèi)存掃描/請(qǐng)求和釋放動(dòng)作。
新聞熱點(diǎn)
疑難解答