無(wú)錫做網(wǎng)站優(yōu)化價(jià)格301313龍虎榜
死機(jī)定位(進(jìn)程虛擬地址空間耗盡)
一、死機(jī)現(xiàn)象
內(nèi)存富裕,但內(nèi)存申請(qǐng)失敗。
死機(jī)時(shí)打?。?br>
懷疑是:
1、內(nèi)存碎片原因?qū)е隆?br> 2、進(jìn)程虛擬地址空間耗盡導(dǎo)致。
3、進(jìn)程資源限制導(dǎo)致。
二、內(nèi)存碎片分析
1、理論知識(shí):如何分析內(nèi)存碎片化情況
使用 /proc/buddyinfo:
/proc/buddyinfo 文件提供了關(guān)于內(nèi)存碎片化的重要信息。這個(gè)文件顯示了每個(gè)內(nèi)存區(qū)域(zone)中的空閑頁(yè)面數(shù)量,按不同大小分類(lèi)。較大的數(shù)字表示有更多的大塊連續(xù)內(nèi)存可用,而較小的數(shù)字則表明存在更多的小塊內(nèi)存,這是內(nèi)存碎片化的跡象。
內(nèi)容格式如下:
Node , zone …
Node : NUMA 節(jié)點(diǎn)編號(hào);
zone : 內(nèi)存區(qū)域名稱(chēng);
… : 每個(gè)訂單(order)對(duì)應(yīng)的空閑內(nèi)存塊數(shù)量。每個(gè)訂單對(duì)應(yīng) 2^N 個(gè)頁(yè)面(通常是 4 KB 頁(yè)面)
例如:
Node 0, zone Normal 12 22 18 14 10 7 5 3 2 1 0
如果右邊的數(shù)字(大塊內(nèi)存)較少,而左邊的數(shù)字較多,說(shuō)明內(nèi)存碎片化較為嚴(yán)重。
order 0: 12 個(gè) 4 KB 的內(nèi)存塊
order 1: 22 個(gè) 8 KB 的內(nèi)存塊
… …
order 9: 1 個(gè) 2 MB 的內(nèi)存塊
order 10: 0 個(gè) 4 MB 的內(nèi)存塊
實(shí)例說(shuō)明內(nèi)存碎片化:
高階訂單(如 order 7、8、9、10)的值較低:這表明系統(tǒng)中大塊連續(xù)內(nèi)存不足。
低階訂單(如 order 0、1、2、3)的值較高:這表明系統(tǒng)中有大量的小塊內(nèi)存,也可能暗示內(nèi)存碎片化。
2、實(shí)例分析:內(nèi)存碎片化情況
結(jié)論:Top和buddyinfo計(jì)算的剩余內(nèi)存能夠匹配,Order 10為4M內(nèi)存塊都剩余48個(gè),按道理申請(qǐng)40kB*8空間不會(huì)失敗才對(duì)。
====》產(chǎn)生問(wèn)題:為