使用top或htop命令实时查看系统内存使用情况,按M键按内存占用排序,快速定位占用内存最多的进程(如mysqld、nginx、java等)。若发现异常进程(如无响应或持续增长的内存占用),可使用kill -9 <PID>终止该进程(需确认进程无关键业务依赖)。
Linux系统会自动将未使用内存用于缓存(页缓存、目录项缓存、inode缓存),可通过以下命令手动清理:
sync(避免数据丢失);echo 1 > /proc/sys/vm/drop_caches;echo 2 > /proc/sys/vm/drop_caches;echo 3 > /proc/sys/vm/drop_caches(生产环境慎用,可能导致短暂性能下降)。针对占用内存高的应用程序(如数据库、Web服务器),调整其配置文件以减少内存使用:
/etc/my.cnf,调整innodb_buffer_pool_size(默认可能过大,可设置为物理内存的50%-70%);/etc/nginx/nginx.conf,调整worker_processes(设为CPU核心数)和worker_connections(每个进程的最大连接数);-Xms初始堆、-Xmx最大堆),避免过度分配(如-Xms512m -Xmx1024m)。使用systemctl命令禁用不需要的后台服务,释放内存:
systemctl list-units --type=service;systemctl stop <service_name>(如httpd、postfix);systemctl disable <service_name>。若物理内存不足,可通过增加交换空间缓解内存压力:
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
/swapfile none swap sw 0 0添加到/etc/fstab文件中,重启后自动启用。修改/etc/sysctl.conf文件,调整以下参数以优化内存使用:
vm.swappiness=10(值越小,系统越倾向于使用物理内存,而非swap,默认值为60);vm.vfs_cache_pressure=100(值越大,内核越积极回收slab缓存,默认值为100,可根据情况调整);sudo sysctl -p。保持系统和软件的最新版本,以获取性能优化和安全补丁。使用以下命令更新:
sudo yum update -y
(注:部分更新可能包含内存管理的优化,能有效减少内存占用)。
若以上方法均无法解决内存占用高的问题,且系统频繁出现内存不足(OOM)错误,建议升级服务器硬件,增加物理内存(如从4GB升级至8GB或更高)。这是最直接、有效的解决方式,尤其适用于内存需求大的应用场景(如大数据处理、高并发网站)。