1.
概述与准备工作
- 目标:通过持续监控识别CPU、内存、磁盘IO、网络瓶颈并采取对应优化措施。
- 前提:有root或sudo权限的香港VPS(常见系统:Ubuntu/Debian/CentOS)。建议先备份重要数据并记录当前配置。
- 工具推荐:Prometheus+node_exporter、Grafana、Netdata、htop/atop、iostat、iftop、mysqltuner、iperf3。
2.
在VPS上部署基础监控:node_exporter
- 安装(以Linux为例):wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-
.linux-amd64.tar.gz;tar xzf 解压;sudo useradd -rs /bin/false nodeusr;将node_exporter二进制放到/usr/local/bin。
- Systemd服务文件示例:/etc/systemd/system/node_exporter.service,内容包括ExecStart=/usr/local/bin/node_exporter;执行 systemctl daemon-reload && systemctl enable --now node_exporter。
- 验证:curl http://localhost:9100/metrics,能看到系统指标后在Prometheus中添加job抓取该实例。
3.
部署Prometheus与Grafana面板
- Prometheus安装:下载prometheus,编辑prometheus.yml,添加job: - job_name: 'node' static_configs: - targets: ['your_vps_ip:9100']。启动并确认抓取。
- Grafana:apt/yum安装后登录(默认3000端口),导入现成“Node Exporter Full”或“Nginx/MySQL”仪表盘模板。
- 快速告警:在Prometheus里写rule(如CPU 5分钟平均>80%),并用Alertmanager做邮件/Slack告警。
4.
轻量监控快速起步:Netdata/htop
- Netdata:一键安装bash <(curl -Ss https://my-netdata.io/kickstart.sh),可实时查看进程、磁盘、网络、数据库指标,非常适合排查突发峰值。
- 本地工具:htop、atop、iostat -x 1 5、vmstat 1 5,用于即时定位问题(CPU处于iowait、大量上下文切换、磁盘队列长)。
5.
监控项与阈值建议
- CPU:持续5分钟平均>70%需关注,>90%触发扩容或优化。
- 内存:可用内存低于20%且swap使用显著上升,排查内存泄漏或配置Redis/MySQL内存过大。
- 磁盘IO:avg_queue>1 且 await>10ms 表示磁盘瓶颈。
- 网络:带宽利用>70%或丢包/重传率上升,考虑流量控制或更换带宽包。
6.
具体调优步骤:系统层面
- 调整swappiness:echo 10 | sudo tee /proc/sys/vm/swappiness,并写入/etc/sysctl.conf vm.swappiness=10。
- 文件句柄与连接数:sysctl -w fs.file-max=200000,修改/etc/security/limits.conf ulimit -n 200000。
- TCP参数优化示例(/etc/sysctl.conf):net.core.somaxconn=65535;net.ipv4.tcp_tw_reuse=1;net.ipv4.tcp_fin_timeout=30;应用 sysctl -p。
7.
服务层面优化:Nginx/Apache/MySQL/Redis
- Nginx:worker_processes auto;worker_connections 10240;keepalive_timeout 15;开启gzip和缓存头;reload配置:nginx -t && systemctl reload nginx。
- MySQL:用mysqltuner.pl查看建议,若专用DB服务器设 innodb_buffer_pool_size≈总内存的60-70%,开启slow_query_log并优化慢查询。
- Redis:设置maxmemory与 eviction策略(volatile-lru/allkeys-lru),并持久化配置适度调整RDB/AOF。
8.
磁盘与网络实战排查
- 磁盘:iostat -x 1 5 查看%util和await;若为高IOPS需求用SSD并设置/noatime挂载,调整IO调度器为deadline或noop(适SSD)。
- 网络:iftop/nethogs查看实时流量,占用异常的进程用netstat -plant定位端口;用iperf3在内网/外网测延迟带宽。
9.
自动化与扩容策略
- 报警策略:Prometheus告警规则示例:CPU持续10分钟>70%则触发扩容流程并通知运维。
- 扩容路径:短期先垂直扩容(调整实例规格、增加内存/CPU),中长期考虑水平扩展(负载均衡+多实例+共享存储或读写分离)。
- 备份与回滚:在改动CPU/内存/磁盘前做快照备份并测试。
10.
优化落地检查清单
- 每次改动先在测试环境验证:观察Prometheus/Grafana曲线变化。
- 写下改动记录(配置、时间、预期),并在改动后72小时内重点监控。
- 定期(每月)用mysqltuner、redis-cli info、ab/wrk等压力工具做容量评估。
11.
问:监控发现是磁盘IO瓶颈,先怎么处理?
- 回答:先用iostat确认是IOPS受限还是延迟高;若延迟高并且使用HDD,优先换SSD或提升磁盘规格;同时检查是否有大量小文件或fsync频繁(例如数据库或日志),可调整数据库刷盘策略、开启异步写或调大缓存;最后检查是否可用日志轮转减少写入。
12.
问:如何为香港VPS设置合理的告警阈值?
- 回答:基于历史数据设定阈值:CPU短期波动可设80%为预警、90%为严重;内存可用<20%预警;磁盘await>10ms或%util>70%预警;带宽持续利用>70%预警。保持阈值不要太敏感以免告警泛滥,结合持续时间(例如连续5分钟)触发。
13.
问:监控成本低但效果好有哪些建议?
- 回答:优先部署轻量工具(node_exporter+Prometheus+Grafana或Netdata),只抓关键指标;使用已配置的公开仪表盘模板降低配置时间;设置合理的告警并用脚本自动化常见应对(如自愈重启服务/扩容提醒),结合CDN与缓存减轻源站负载。
来源:如何通过监控优化香港vps云服务器香港服务器的资源利用