2021-10-01 18:59:05
服务器因内存满陷入假死时,通常表现为无法处理新请求、响应极慢或完全无响应。以下是分步骤的解决方案:
1. 尝试远程连接
执行命令 free -m 查看总内存、已用内存和剩余内存(单位:MB)。
使用 htop(需安装)或 top 动态查看内存占用。
打开任务管理器(Ctrl+Shift+Esc),切换至“性能”选项卡查看内存状态。
执行命令 systeminfo | find "Total Physical Memory" 确认总内存。
运行 top 后按 M 键按内存使用排序,记录占用最高的进程PID。
或使用 ps aux --sort=-%mem | head 直接列出前10名高内存进程。
在任务管理器的“进程”选项卡中,点击“内存”列排序,定位异常进程。
使用 kill -9 <PID> 强制终止进程(如 kill -9 1234)。
若进程为关键服务(如MySQL),优先尝试正常停止(如 systemctl stop mysql)。
右键点击任务管理器中的进程,选择“结束任务”。
对于系统进程,需谨慎操作,避免导致系统崩溃。
执行以下命令组合清理页面缓存、目录项和inode缓存:
sync; echo 3 > /proc/sys/vm/drop_caches注意:此操作会短暂影响性能,仅在紧急情况下使用。
临时禁用并重新启用交换空间:
swapoff -a && swapon -a在IIS管理器中重启对应的应用程序池。
修改内存限制:通过“高级设置”调整“私有内存限制”和“回收条件”。
调整MySQL的 innodb_buffer_pool_size 或Oracle的 SGA_TARGET 参数。
安装未应用的补丁(如 yum update 或 apt upgrade)。
修复已知漏洞可能解决资源泄漏问题。
删除无用文件(如 /var/log 下的旧日志):
journalctl --vacuum-size=100M # 清理系统日志(Linux)使用 du -sh * | sort -h 查找大文件。
Zabbix/Prometheus:监控内存使用率,设置阈值告警。
云服务监控:如AWS CloudWatch、阿里云云监控。
检查 /var/log/messages、/var/log/syslog 或应用程序专属日志(如Nginx的 /var/log/nginx/error.log)。
使用事件查看器(Event Viewer)筛选“错误”和“警告”级别日志。
通过以上步骤,可系统性解决服务器因内存满导致的假死问题,并建立长期预防机制。