一般系统内存过高的情况下,可以通过 free -m
查看当前系统的内存使用情况:
sugoi@sugoi:~$ free -m
总计 已用 空闲 共享 缓冲/缓存 可用
内存: 11415 3576 764 593 7074 7001
交换: 2047 8 2039
在发现是系统内存占用高后,可以手动清理 Cache,因为 Cache 高的话,可以通过 drop_caches
的方式来清理:
page cache
:echo 1 > /proc/sys/vm/drop_caches
dentries
和 inodes
:echo 2 > /proc/sys/vm/drop_caches
page cache
、dentries
和 inodes
:echo 3 > /proc/sys/vm/drop_caches
因为进程是运行在容器中,在 Kubernetes 集群中,若执行 drop_caches
相关命令,将会对节点上的所有其他应用程序产生影响,尤其是那些占用大量 I/O 并由于缓冲区高速缓存而获得更好性能的应用程序,可能会产生 “负面” 后果。
所以上述不是一个在容器环境下使用的好方法。
因为容器设置了 Memory Limits
,在容器在运行达到 Limits
上限,就会因 OOM
被杀掉,产生原因可能是: