一天,有人報(bào)上了一個(gè)問(wèn)題,發(fā)現(xiàn)一臺(tái)服務(wù)器上空閑內(nèi)存不足,slab占用了40多G,想知道什么原因,然后拉我進(jìn)入在線(xiàn)會(huì)議遠(yuǎn)程看看。
我進(jìn)入會(huì)議常規(guī)檢測(cè)一番,于是想看看哪個(gè)slab占用內(nèi)存比較多,直接上小腳本:
while sleep 1; do cat /proc/slabinfo | awk ‘{name=$1; size=$2*$4/4096; printf “%s %lu
”, name, size;}’ | sort -n -r -k 2 | head -n 20; echo “--------------”;done;
結(jié)果顯示類(lèi)似如下:
TCPv6 9347580 (單位:4K, 大約36G)
inode_cache 3519
ext3_inode_cache 3427
dentry 2285
kmem_cache 1389
sysfs_dir_cache 832
buffer_head 682
radix_tree_node 675
vm_area_struct 505
size-2048 500
task_struct 496
size-1024 464
。..
可以看到TCPv6占用了36G左右, 然后會(huì)議上有個(gè)負(fù)責(zé)業(yè)務(wù)應(yīng)用的妹子問(wèn),能知道是哪個(gè)進(jìn)程占用的嗎?
我裝著不忙地喝了一口百歲山,于是派上trace_event出場(chǎng):(以下操作過(guò)程中全場(chǎng)安靜,都盯著我的鍵盤(pán)輸出)
首先通過(guò)/proc/slabinfo 查看到TCPv6 object size=1856,然后:
cd /sys/kernel/debug/tracing/echo ‘bytes_alloc==1856’ 》events/kmem/kmem_cache_alloc/filterecho 1 》 。/options/stacktracecat 。/trace
從。/trace中打印出的堆棧信息和進(jìn)程號(hào),確認(rèn)是他們的業(yè)務(wù)進(jìn)程xxx正在干什么事(已排除內(nèi)存泄漏)
這時(shí)候妹子搶占了會(huì)上所有人的講話(huà),笑著說(shuō):“能把history打印出來(lái)嗎?”,連續(xù)提醒了我三次,說(shuō)想學(xué)習(xí)一下?!墩媸且粋€(gè)好學(xué)的童鞋 :-)》
這個(gè)時(shí)候本想順道宣傳一下我在閱碼場(chǎng)發(fā)布的tracers視頻課程,視頻課程里面各個(gè)traces都有很詳細(xì)的講解和案例。
但是工作時(shí)間要體現(xiàn)一定的專(zhuān)業(yè)和嚴(yán)肅性,并沒(méi)有宣傳,如果她有機(jī)會(huì)能看到這篇公眾號(hào)之后再去訂閱會(huì)更好:-)
最后我又喝下一口百歲山, 敲下history | tail -20 之后獨(dú)自退出了會(huì)議。..
責(zé)任編輯:haq
-
服務(wù)器
+關(guān)注
關(guān)注
13文章
9795瀏覽量
87993 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3125瀏覽量
75270
原文標(biāo)題:吸引住妹子的trace_event技術(shù)
文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
華納云服務(wù)器角色服務(wù)器失敗的原因和解決辦法

評(píng)論