查看实时内存分配
运行命令 free -h
获取内存总量、已用及缓存信息,重点关注:
used
列:已占用内存总量。buff/cache
:系统缓存占用(通常无需手动释放,但需检查是否异常增长)。$ free -h total used free shared buff/cache available Mem: 16G 9G 1.2G 256M 5.8G 6G
定位高内存进程
使用 top
或 htop
工具,按内存使用排序(Shift+M
):
RES
列:进程实际占用的物理内存。%MEM
:内存占用百分比。现象:某个进程内存持续增长,重启后短期恢复。
排查步骤:
ps aux --sort=-%mem | head -n 10
列出前10名高内存进程。valgrind
或 jemalloc
检测代码级内存泄漏。处理方案:
-Xmx
参数)。buff/cache
),提升读写性能,但可能被误判为“内存不足”。sync && echo 3 > /proc/sys/vm/drop_caches
/etc/sysctl.conf
中的 vm.vfs_cache_pressure
,降低缓存保留倾向。netstat -antp
查看异常网络连接。lsof -p <PID>
分析进程打开的文件与端口。iptables
或 ufw
),限制非必要端口访问。innodb_buffer_pool_size
或Redis的 maxmemory
。worker_processes
和 worker_connections
需与CPU核心数匹配。监控体系搭建
自动化运维
find /var/log -name "*.log" -mtime +7 -exec rm {} ;
架构优化
top/htop
:进程监控工具(官方文档)。Valgrind
:内存调试工具(项目主页)。通过以上方法,可系统性解决服务器内存占用问题,同时建立长效防护机制,确保服务稳定运行,建议定期进行压力测试与资源评估,以适应业务增长需求。