Ubuntu
長 TCPDUMP 擷取緩慢但肯定會佔用 RAM 中的所有可用記憶體
當我在我的 ubuntu 伺服器上 tcpdump 網路流量時,我看到可用記憶體隨著時間的推移而減少。
似乎擷取儲存在記憶體中。起初,我注意到了這個問題,因為我將擷取保存在儲存在 RAM 中的 /tmp 文件夾中。
然後我將擷取儲存在磁碟上,但我看到了同樣的問題;一旦我刪除磁碟上的擷取,RAM 記憶體就會被釋放!
這是 tcpdump 命令
sudo tcpdump -i lo -W 300 -C 100 -s0 -w /home/user/file.pcap &
// BEFORE free -m total used free shared buff/cache available Mem: 14683 3422 6709 153 4551 10745 Swap: 0 0 0
// DELETING THE CAPTURES rm /home/user/file.pcap*
// AFTER free -m total used free shared buff/cache available Mem: 14683 3399 8267 153 3016 10768
如何確保擷取沒有佔用所有可用記憶體?
目標是讓 tcpdump 執行幾天。
free
確定可用記憶體時不要看該列;看available
。Linux 將使用未使用的記憶體作為文件的緩衝區記憶體,以加快對這些文件的訪問。您正在將大量 tcpdump 數據包擷取數據寫入文件系統,因此這些數據也會緩沖在記憶體中。當您停止擷取過程並刪除文件時,用於該文件的緩衝區記憶體也會被釋放。
如果系統確實需要記憶體,例如用於處理數據,那麼緩衝區記憶體也將被釋放,這意味著訪問文件中的數據將導致從磁碟讀取文件而不是從緩衝區記憶體中讀取文件。
這就是該
available
列添加free
和buff/cache
列的原因available
。