$uptime23:51:26up21:31,1user,loadaverage:30.02,26.43,19.0212
該命令可以大致的看出計(jì)算機(jī)的整體負(fù)載情況,load average后的數(shù)字分別表示計(jì)算機(jī)在1min、5min、15min內(nèi)的平均負(fù)載。
2. dmesg | tail
$dmesg|tail[1880957.563150]perlinvokedoom-killer:gfp_mask=0x280da,order=0,oom_score_adj=0[...][1880957.563400]Outofmemory:Killprocess18694(perl)score246orsacrificechild[1880957.563408]Killedprocess18694(perl)total-vm:1972392kB,anon-rss:1953348kB,file-rss:0kB[2320864.954447]TCP:PossibleSYNfloodingonport7001.Droppingrequest.CheckSNMPcounters.123456
打印內(nèi)核環(huán)形緩存區(qū)中的內(nèi)容,可以用來(lái)查看一些錯(cuò)誤;
section 4:動(dòng)態(tài)內(nèi)存分配進(jìn)階 深入理解動(dòng)態(tài)分配內(nèi)存的內(nèi)部機(jī)制 堆和棧 代碼段 數(shù)據(jù)段 環(huán)境變量和命令行參數(shù) 棧 堆 進(jìn)程地址空間 malloc函數(shù)的機(jī)制 分配原則——最先適合分配方法 malloc內(nèi)部調(diào)用sbrk 系統(tǒng)調(diào)用 一個(gè)進(jìn)程使用一個(gè)堆,所有內(nèi)存由操作系統(tǒng)管理 問(wèn)題:如果申請(qǐng)一個(gè)內(nèi)存并沒(méi)有釋放,當(dāng)進(jìn)程結(jié)束運(yùn)行的時(shí)候,會(huì)造成內(nèi)存泄露么嗎。
系統(tǒng)內(nèi)存余量大小 (mem.memfree):redis是純內(nèi)存系統(tǒng),系統(tǒng)內(nèi)存必須保有足夠余量,避免出現(xiàn)oom,導(dǎo)致redis進(jìn)程被殺,或使用swap導(dǎo)致redis性能驟降。
3.解析chunktype為covr的越界以及溢出當(dāng)chunk_data_size小于kskipbytesofdatabox會(huì)造成underflow,傳給setdata會(huì)越界讀同一個(gè)地方當(dāng)chunk_data_size等于size_max,可以導(dǎo)致整數(shù)溢出,后面的readat操作會(huì)繼續(xù)讀寫(xiě)操作,導(dǎo)致寫(xiě)越界.。
通過(guò)這個(gè)措施,便可以避免攻擊數(shù)據(jù)包到達(dá)上層或者被forward到其它網(wǎng)段,有效為后面的處理邏輯屏蔽了不必要的內(nèi)存消耗以及cpu時(shí)間的浪費(fèi)。
3. vmstat 1
$vmstat1procs---------memory-------------swap-------io-----system--------cpu-----rbswpdfreebuffcachesisobiboincsussyidwast3400200889792737085918280005610961300320020088992073708591860000592132844282981100320020089011273708591860000095012154991000320020088956873712591856000481190024599900003200200890208737125918600000158984840981100^C123456789
打印進(jìn)程、內(nèi)存、交換分區(qū)、IO和CPU等的統(tǒng)計(jì)信息;
vmstat的格式如下
>vmstat[options][delay[count]]
vmstat第一次輸出表示從開(kāi)機(jī)到vmstat運(yùn)行時(shí)的平均值;剩余輸出的都是在指定的時(shí)間間隔內(nèi)的平均值,上述例子中delay的值設(shè)置為1,除第一次以外,剩余的都是1秒統(tǒng)計(jì)一次,count未設(shè)置,將會(huì)一直循環(huán)打印。