最近又遇到一种经常遇到的情况:内存快满的问题。这种情况在日常运维中也是时常会遇到的情况,但解决方法好像除了增加物理内存也没有什么其他好的办法了,其他办法好像也是只能解决一下燃眉之急。本篇仅记录一下自己遇到的一些问题及解决,做运维时间短,如果有更好的办法也希望大家能提出来一起讨论。
1、关掉没有什么用而又占用内存很大的进程
1、可通过top命令,再敲击键盘M,让占用内存较大的进程排到前面
2、执行ps aux --sort=-%mem | head -20,列出占内存前二十的进程
2、清理缓存和缓冲区
[root@VM-8-15-centos ~]# echo 1 > /proc/sys/vm/drop_caches
上述命令的意思是将 1 写入到 drop_caches 中去,其中还可以写入2,3,各模式意义如下:
- 1:清理页缓存,页缓存用于存储最近访问过的文件内容,以加快对相同文件的后续访问速度。清理页缓存可能会导致后续的文件访问变慢,因为内容需要从磁盘重新读取。
- 2:理目录项缓存和 inode 缓存,目录项缓存用于存储目录项信息,而 inode 缓存用于存储文件的元数据。清理这些缓存可能会导致文件系统操作变慢,因为相关信息需要从磁盘重新读取。
- 3:清理页缓存、目录项缓存和 inode 缓存,这通常用于最大程度地释放内存,但同样会导致后续的磁盘访问和文件系统操作变慢。
但是要注意,drop_caches 的使用应该谨慎,因为它可能会导致系统性能下降。
3、调整交换空间大小
交换空间(Swap space)是硬盘上的一部分区域,当物理内存(RAM)不足以容纳所有活动进程时,系统会使用交换空间来存储不活跃的内存页。这样,物理内存就可以为其他更活跃的进程释放空间。
交换空间的用途主要包括:
- 提供额外的虚拟内存,使得系统能够运行内存需求较大的应用程序。
- 在内存紧张时,通过将不常用的数据交换到硬盘上,来释放物理内存,防止系统因内存不足而崩溃。
- 支持系统的休眠功能,因为休眠时系统会将内存内容保存到交换空间,以便快速恢复工作状态。
- 通过交换机制,系统可以更有效地管理内存,优化性能。
如果没有配置交换空间,可按以下步骤配置:
1、创建swap分区
fallocate -l 4G /usr/swapfile
2、分配权限
chmod 600 /usr/swapfile
3、初始化交换文件
mkswap /usr/swapfile
4、开启swap
swapon /usr/swapfile
5、查看是否配置成功
free -h # 查看swap行是否有分配有内存
6、使交换空间持久化:编辑
/etc/fstab
文件,添加一行以便在系统启动时自动激活交换空间/usr/swapfile swap swap defaults 0 0