if [ "$USAGE" -gt "$THRESHOLD" ]; then echo"[$(date)] 内存使用率 ${USAGE}%,超过阈值 ${THRESHOLD}%" \ >> /var/log/mem-alert.log # 列出 top 5 内存大户 ps aux --sort=-%mem | head -6 \ >> /var/log/mem-alert.log fi
crontab 每 5 分钟跑一次:
1
*/5 * * * * /opt/scripts/mem-check.sh
4. 服务分级,按需启停
3.5G 内存开不了太多服务。给服务分级:
等级
服务
策略
必须常驻
Nginx、SSH
始终运行
核心业务
Java 主服务
始终运行 + 守护
辅助服务
日志收集、定时任务
按需启动
低频服务
测试环境、管理后台
不用时停掉
1 2 3 4
# 快速启停辅助服务 alias app-start='systemctl start myapp' alias app-stop='systemctl stop myapp' alias app-status='systemctl status myapp'
5. Nginx 减压
静态资源、反向代理都走 Nginx,别让 Java 干这些活:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
server { listen80; server_name example.com;
# 静态资源直接返回 location /static/ { alias /var/www/static/; expires30d; gzip_staticon; }