關於服務器頻繁內存警告問題記錄
問題
【阿里雲監控】華南1(深圳)-雲服務器ECS服務器於08:49 恢復正常, 持續時間7小時3分鍾
這幾天經常半夜收到阿里雲的內存警告信息;今天有時間去檢查下服務器,發現buff/cache的數據很異常;
查看如下(free):
total used free shared buff/cache available
Mem: 16268220 7333368 544156 616 8390696 8571076
Swap: 0 0 0
Mem: 服務器內存
- total 服務器總內存大小
- used 已經使用的內存大小
- free 空閑的內存大小
- shared 多個進程共享的內存總額
- buffers 設備數據緩存,記錄文件系統metadata(目錄、權限、屬性等)
- cache 文件內容的緩存
- available 還可以使用的物理內存大小
swap:交換空間,當swap值大於0時,表明內存不夠,需考慮增加物理內存
原因
- 服務器部署的服務每天都在不停的訪問着服務對日志文件的操作比較頻繁、對於服務器文件資源的操作(修改配置文件、上傳刪除文件等),在我們每次操作完后,系統並不會釋放文件內存而是會緩存起來方便我們下次進行操作;雖然對於文件操作效率大大提升但是對於雲服務器的內存消耗不小
解決方法
查看服務器緩存釋放機制
cat /proc/sys/vm/drop_caches
0
drop_caches的值可以是0-3之間的數字,代表不同的含義:
- 0:不釋放(系統默認值)
- 1:釋放頁緩存
- 2:釋放dentries和inodes
- 3:釋放所有緩存
怎么釋放服務器磁盤緩存
echo 1 > /proc/sys/vm/drop_caches
再次查看服務器內存情況(free -h):
total used free shared buff/cache available
Mem: 15G 7.0G 7.9G 616K 603M 8.2G
Swap: 0B 0B 0B
總結
- 養成定時查看分析服務器的帶寬、內存等系列指標,及時作出相應;不單單只關注業務需求
- 全方面的分析,就拿這次來說,我們單從used使用的內存來看並不能看出啥問題來
- 服務器的各項指標預警還是必須的
