Linux服務(wù)器系統(tǒng)內(nèi)存監(jiān)控方法詳解 |
發(fā)布時(shí)間: 2012/8/11 10:58:53 |
內(nèi)存是Linux內(nèi)核所管理的最重要的資源之一。內(nèi)存管理系統(tǒng)是操作系統(tǒng)中最為重要的部分,因?yàn)橄到y(tǒng)的物理內(nèi)存總是少于系統(tǒng)所需要的內(nèi)存數(shù)量。虛擬內(nèi)存就是為了克服這個(gè)矛盾而采用的策略。系統(tǒng)的虛擬內(nèi)存通過(guò)在各個(gè)進(jìn)程之間共享內(nèi)存而使系統(tǒng)看起來(lái)有多于實(shí)際內(nèi)存的內(nèi)存容量。Linux支持虛擬內(nèi)存,就是使用磁盤(pán)作為RAM的擴(kuò)展,使可用內(nèi)存相應(yīng)地有效擴(kuò)大。核心把當(dāng)前不用的內(nèi)存塊存到硬盤(pán),騰出內(nèi)存給其他目的。當(dāng)原來(lái)的內(nèi)容又要使用時(shí),再讀回內(nèi)存。
一、內(nèi)存使用情況監(jiān)測(cè) (1)實(shí)時(shí)監(jiān)控內(nèi)存使用情況 在命令行使用“Free”命令可以監(jiān)控內(nèi)存使用情況
#free–b–s2 這個(gè)命令將會(huì)在終端窗口中連續(xù)不斷地報(bào)告內(nèi)存的使用情況,每2秒鐘更新一次。 (2)組合watch與free命令用來(lái)實(shí)時(shí)監(jiān)控內(nèi)存使用情況:
二、虛擬內(nèi)存的概念 (1)Linux虛擬內(nèi)存實(shí)現(xiàn)機(jī)制 Linux虛擬內(nèi)存的實(shí)現(xiàn)需要六種機(jī)制的支持:地址映射機(jī)制、內(nèi)存分配回收機(jī)制、緩存和刷新機(jī)制、請(qǐng)求頁(yè)機(jī)制、交換機(jī)制、內(nèi)存共享機(jī)制。 首先內(nèi)存管理程序通過(guò)映射機(jī)制把用戶(hù)程序的邏輯地址映射到物理地址,在用戶(hù)程序運(yùn)行時(shí)如果發(fā)現(xiàn)程序中要用的虛地址沒(méi)有對(duì)應(yīng)的物理內(nèi)存時(shí),就發(fā)出了請(qǐng)求頁(yè)要求;如果有空閑的內(nèi)存可供分配,就請(qǐng)求分配內(nèi)存(于是用到了內(nèi)存的分配和回收),并把正在使用的物理頁(yè)記錄在緩存中(使用了緩存機(jī)制)。如果沒(méi)有足夠的內(nèi)存可供分配,那么就調(diào)用交換機(jī)制,騰出一部分內(nèi)存。另外在地址映射中要通過(guò)TLB(翻譯后援存儲(chǔ)器)來(lái)尋找物理頁(yè);交換機(jī)制中也要用到交換緩存,并且把物理頁(yè)內(nèi)容交換到交換文件中后也要修改頁(yè)表來(lái)映射文件地址。 (2)虛擬內(nèi)存容量設(shè)定 也許有人告訴你,應(yīng)該分配2倍于物理內(nèi)存的虛擬內(nèi)存,但這是個(gè)不固定的規(guī)律。如果你的物理保存比較小,可以這樣設(shè)定。如果你有1G物理內(nèi)存或更多的話(huà),可以縮小一下虛擬內(nèi)存。Linux會(huì)把大量的內(nèi)存用做Cache的,但在資源緊張時(shí)回收回.。你只要看到swap為0或者很小就可以放心了,因?yàn)閮?nèi)存放著不用才是最大的浪費(fèi)。 三、使甩vmstat命令監(jiān)視虛擬內(nèi)存使用情況 vmstat是VirtualMeomoryStatistics(虛擬內(nèi)存統(tǒng)計(jì))的縮寫(xiě),可對(duì)操作系統(tǒng)的虛擬內(nèi)存、進(jìn)程、CPU活動(dòng)進(jìn)行監(jiān)視。它是對(duì)系統(tǒng)的整體情況進(jìn)行統(tǒng)計(jì),不足之處是無(wú)法對(duì)某個(gè)進(jìn)程進(jìn)行深入分析。通常使用vmstat55(表示在5秒時(shí)間內(nèi)進(jìn)行5次采樣)命令測(cè)試。將得到一個(gè)數(shù)據(jù)匯總它可以反映真正的系統(tǒng)情況。
(1)進(jìn)程procs: r:在運(yùn)行隊(duì)列中等待的進(jìn)程數(shù)。 b:在等待io的進(jìn)程數(shù)。 (2)內(nèi)存memoy: swpd:現(xiàn)時(shí)可用的交換內(nèi)存(單位KB)。 free:空閑的內(nèi)存(單位KB)。 buff:緩沖去中的內(nèi)存數(shù)(單位:KB)。 cache:被用來(lái)做為高速緩存的內(nèi)存數(shù)(單位:KB)。 (3)swap交換頁(yè)面 si:從磁盤(pán)交換到內(nèi)存的交換頁(yè)數(shù)量,單位:KB/秒。 so:從內(nèi)存交換到磁盤(pán)的交換頁(yè)數(shù)量,單位:KB/秒。 (4)io塊設(shè)備: bi:發(fā)送到塊設(shè)備的塊數(shù),單位:塊/秒。 bo:從塊設(shè)備接收到的塊數(shù),單位:塊/秒。 (5)system系統(tǒng): in:每秒的中斷數(shù),包括時(shí)鐘中斷。 cs:每秒的環(huán)境(上下文)切換次數(shù)。 (6)cpu中央處理器: cs:用戶(hù)進(jìn)程使用的時(shí)間。以百分比表示。 sy:系統(tǒng)進(jìn)程使用的時(shí)間。以百分比表示。 id:中央處理器的空閑時(shí)間。以百分比表示。 如果r經(jīng)常大于4,且id經(jīng)常小于40,表示中央處理器的負(fù)荷很重。如果bi,bo長(zhǎng)期不等于0,表示物理內(nèi)存容量太小。
1、內(nèi)存泄漏的定義: 一般我們常說(shuō)的內(nèi)存泄漏是指堆內(nèi)存的泄漏。堆內(nèi)存是指程序從堆中分配的,大小任意的(內(nèi)存塊的大小可以在程序運(yùn)行期決定),使用完后必須顯示釋放的內(nèi)存。應(yīng)用程序一般使用malloc,realloc,new等函數(shù)從堆中分配到一塊內(nèi)存,使用完后,程序必須負(fù)責(zé)相應(yīng)的調(diào)用free或delete釋放該內(nèi)存塊,否則,這塊內(nèi)存就不能被再次使用,我們就說(shuō)這塊內(nèi)存泄漏了。 2、內(nèi)存泄露的危害 從用戶(hù)使用程序的角度來(lái)看,內(nèi)存泄漏本身不會(huì)產(chǎn)生什么危害,作為一般的用戶(hù),根本感覺(jué)不到內(nèi)存泄漏的存在。真正有危害的是內(nèi)存泄漏的堆積,這會(huì)最終消耗盡系統(tǒng)所有的內(nèi)存。從這個(gè)角度來(lái)說(shuō),一次性?xún)?nèi)存泄漏并沒(méi)有什么危害,因?yàn)樗粫?huì)堆積,而隱式內(nèi)存泄漏危害性則非常大,因?yàn)檩^之于常發(fā)性和偶發(fā)性?xún)?nèi)存泄漏它更難被檢測(cè)到。存在內(nèi)存泄漏問(wèn)題的程序除了會(huì)占用更多的內(nèi)存外,還會(huì)使程序的性能急劇下降。對(duì)于服務(wù)器而言,如果出現(xiàn)這種情況,即使系統(tǒng)不崩潰,也會(huì)嚴(yán)重影響使用。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |