1.
准备与初步检查
首次登录后先做基础检查:查看系统信息与已用资源。运行命令:uname -a;cat /etc/os-release;free -h(查看内存);df -h(查看磁盘);lsblk(分区);uptime(负载)。记录当前内存、交换区、磁盘与负载基线,截取输出保存在 /root/system-baseline.txt:sudo bash -c "uname -a > /root/system-baseline.txt && free -h >> /root/system-baseline.txt && df -h >> /root/system-baseline.txt".
2.
为 500MB VPS 准备轻量化监控栈
500MB 内存必须选轻量工具。推荐安装:htop(交互查看)、vnstat(流量)、atop 或 glances(可作为替代)、monit(服务健康和自动重启)。安装命令示例(Debian/Ubuntu):sudo apt update && sudo apt install -y htop vnstat glances monit. 启动 vnstat:sudo vnstat -u -i eth0 && sudo systemctl enable --now vnstat(将 eth0 换成你的网卡名)。
3.
配置 monit 监控关键进程并自动重启
编辑 /etc/monit/monitrc(或 /etc/monit/conf-enabled/ 下新建 conf 文件),示例配置监控 nginx、php-fpm、mysql:check process nginx with pidfile /run/nginx.pid … start program = "/usr/sbin/service nginx start" stop program = "/usr/sbin/service nginx stop" if failed port 80 protocol http then restart。保存后测试:sudo monit -t && sudo systemctl restart monit && sudo monit status。Monit 占用极小,适合 500MB 环境。
4.
内存不足时的交换空间(swap)配置
若无 swap,创建一个小 swap 文件(1G 或 512M 视磁盘而定):sudo fallocate -l 1G /swapfile || sudo dd if=/dev/zero of=/swapfile bs=1M count=1024;sudo chmod 600 /swapfile;sudo mkswap /swapfile;sudo swapon /swapfile;并把 /swapfile 添加到 /etc/fstab:/swapfile none swap sw 0 0。设置 swappiness:sudo sysctl vm.swappiness=10(永久写入 /etc/sysctl.conf)。
5.
定时任务收集关键指标到本地日志
使用简单脚本周期记录指标便于排查。创建 /usr/local/bin/vps-metrics.sh 内容如下:#!/bin/bash; date >> /var/log/vps-metrics.log; free -m >> /var/log/vps-metrics.log; df -h >> /var/log/vps-metrics.log; vnstat --oneline >> /var/log/vps-metrics.log。chmod +x 并在 crontab 中加入:*/5 * * * * /usr/local/bin/vps-metrics.sh。长期保留日志并配合 logrotate 管理(参见下一节)。
6.
配置 logrotate 防止日志撑满磁盘
创建 /etc/logrotate.d/vps-metrics,其中示例:/var/log/vps-metrics.log { daily rotate 7 compress missingok notifempty create 0640 root adm }。同时为应用日志(nginx/php)检查是否存在大文件,及时清理或按大小分割:sudo du -sh /var/log/* | sort -h。
7.
磁盘与 inode 监控与清理步骤
频繁出现磁盘满建议检查大文件并删除:sudo ncdu / 或 sudo du -h --max-depth=1 /var | sort -hr | head -n 20。检查 inode:df -i。清理 apt 缓存:sudo apt-get clean。清理旧内核(Debian/Ubuntu):sudo apt autoremove --purge。对于日志过多的服务,启用日志轮转并压缩历史日志。
8.
网络监控与流量控制
使用 vnstat 查看长期流量,iftop(实时)或 nethogs(按进程)。安装 iftop:sudo apt install -y iftop,运行 sudo iftop -i eth0。若发现异常流量,使用 iptables 或 nftables 临时封锁源 IP:sudo iptables -I INPUT -s 1.2.3.4 -j DROP。持久化使用 /etc/iptables/rules.v4 或相应工具。
9.
服务优化与减少常驻内存
500MB VPS 要关闭不必要服务:列出服务 sudo systemctl list-unit-files --type=service --state=enabled,禁用不需要的:sudo systemctl disable --now service-name。替换重量级组件为轻量替代,例如用 MariaDB 配合调优或使用 SQLite,PHP-FPM 设置 pm = dynamic 并减少 pm.max_children,Nginx worker_processes 设置为 auto 并调整 worker_connections。
10.
建立告警机制(邮件/Telegram)
轻量告警可以使用 cron + 邮件或 monit 自带邮件。配置 monit 的 set alert 邮件或写一个简单脚本 /usr/local/bin/check-and-alert.sh,检查 free -m 中可用内存低于阈值并调用 mailx 或 curl 到 Telegram bot:if [ $free_mem -lt 100 ]; then curl -s -X POST https://api.telegram.org/botTOKEN/sendMessage -d chat_id=ID -d text="VPS 内存警报: $free_mem MB"; fi。把脚本放入 cron 每 5 分钟执行。
11.
安全与自动更新策略
为长期稳定,保持系统安全更新。可启用 unattended-upgrades(Debian/Ubuntu)但需谨慎生产环境:sudo apt install unattended-upgrades,然后编辑 /etc/apt/apt.conf.d/50unattended-upgrades。并安装 fail2ban:sudo apt install fail2ban,用于防暴力登录防护。定期检查 root 登录与 sudo 记录:sudo lastb、sudo cat /var/log/auth.log。
12.
备份与恢复方案(远端备份)
定期备份重要数据到远端(S3、B2、远程 rsync)。示例用 rclone 配置一个 remote(例如 B2),然后 crontab 加入每日备份:0 2 * * * /usr/bin/rclone sync /var/www remote:backup/taiwan-vps-$(date +\%F) --log-file=/var/log/rclone-backup.log --delete-during。测试恢复流程并保留多份周期性快照。
13.
监控自动化脚本与健康检查建议
编写一个包含多项检查的单脚本 health-check.sh:检查端口响应(curl -I http://localhost:80),数据库连接,磁盘使用率,内存与 swap,并在任一项超阈值时触发告警或重启服务(systemctl restart)。将其设置为 systemd timer 或 cron,每 5 分钟运行,并记录输出到 /var/log/health-check.log。
14.
长期维护策略与容量规划
记录历史指标(vnstat、metrics log、monit 报表),每周复核一次:内存峰值、负载、流量、磁盘增长率。若平均可用内存经常低于 100MB 或 swap 使用频繁,则考虑升级 VPS 规格或迁移到更合适实例。提前规划备份与容灾,设定容量阈值(例如磁盘 80%、内存 70%)并在超阈值时触发扩容流程或清理策略。
15.
问1:500MB VPS 最关键的监控点是什么?
答:对于 500MB VPS,最关键是内存与交换区使用、进程数(PHP/MySQL)、磁盘使用与 inode、以及网络流量。优先监控内存和 swap,若频繁触发 swap 或 OOM,则需调优应用或增加内存。
16.
问2:哪些轻量工具适合长期运行在 500MB 环境?
答:推荐使用 htop、vnstat、monit、glances(低配置下)、ncdu(手动排查)和简单的 cron 脚本。避免在本机运行完整的 Prometheus+Grafana(占用较多内存),可以把 node_exporter 指标推送到外部监控服务。
17.
问3:当遇到间歇性高负载该如何排查与自动化恢复?
答:先用 top/htop、atop/glances 捕获峰值时刻信息;查看 /var/log/syslog、应用日志与 health-check.log。设置 monit 来自动重启挂掉或占内存异常的服务,并配合告警脚本通知运维。若问题频繁出现,建议限制应用并发、减少 pm.max_children、开启 swap 并评估升级。
来源:如何监控与维护台湾500m vps长期运行稳定性与资源使用情况