1.
概述与适用范围
- 适用对象:使用台湾机房 VPS、独服或云主机的运维与站长。
- 主要关注:网络连通性、带宽/丢包、IO/CPU/内存、服务进程、DNS 与 CDN 配置。
- 环境说明:常见系统为 CentOS/Ubuntu/Debian,虚拟化技术 KVM/Xen/OpenVZ/LXC。
- 目标:快速定位导致不稳定的根因并提供可复现的应对流程。
- 输出:包含命令、阈值、配置示例与真实案例复盘,便于运维复用。
2.
典型稳定性问题分类
- 网络类:高丢包 (>5%)、RTT 突增、带宽饱和(端口流量接近带宽上限)。
- 资源类:CPU 长时间 90%+、内存 Swap 大量使用、磁盘 I/O 等待高(iowait >30%)。
- 服务类:进程频繁重启、连接超时、数据库连接耗尽(MySQL max_connections 达到上限)。
- DNS/解析:域名解析慢或解析不一致,导致页面加载失败。
- 安全类:异常大量 SYN、UDP 包(可能是 DDoS),或大量失败登录尝试(暴力破解)。
3.
基础排查流程(从底层到应用)
- 步骤1(主机健康):查看负载和资源 top/htop、free -m、vmstat 1 5、iostat -x 1 3;阈值示例:load > CPU 核数、iowait > 30%。
- 步骤2(磁盘与文件系统):df -h、du -sh、smartctl -A /dev/sda;注意磁盘使用 >80% 与出现高 reallocated_sector_ct。
- 步骤3(网络连通):ping -c 10 8.8.8.8、mtr -r -c 20 目标IP;判断丢包与路径抖动。
- 步骤4(端口与连接):ss -tunap、netstat -anp | grep ESTABLISHED,检查套接字耗尽或 TIME_WAIT 积压。
- 步骤5(日志分析):查看 /var/log/messages、/var/log/syslog、服务日志(nginx/error.log、mysql/error.log)并结合时间轴。
4.
网络与 DDoS 专项排查与应对
- 测试工具:使用 tcpdump -i eth0 'port 80' -c 200 抓包并用 Wireshark/分析脚本判断异常包类型。
- 阈值判断:突发流量 >= 带宽的 60%-80% 或 PPS 激增(例如从 10kpps 跳到 200kpps)。
- 临时策略:在内核级用 iptables/nftables 做速率限制(示例:iptables -A INPUT -p tcp --syn -m limit --limit 25/s --limit-burst 100 -j ACCEPT)。
- 长期防护:接入 CDN(例如 Cloudflare/Akamai)与机房提供的清洗服务、或申请 BGP Anycast 防护。
- 协同联动:与带宽/机房运营商沟通,提交攻防流量样本(pcap)并请求流量清洗或流量镜像协助分析。
5.
应用层故障排查与优化
- Web 层:检查 Nginx/Apache 连接数、worker_connections、keepalive 超时,调整 worker_processes 根据 CPU。
- PHP/应用池:查看 php-fpm 状态、slowlog,调整 pm.max_children 与 pm.max_requests,示例:pm.max_children=50。
- 数据库层:SHOW GLOBAL STATUS LIKE 'Threads_connected'; 检查慢查询并创建索引或调整 max_connections(示例:my.cnf 中 max_connections=500)。
- 连接池:应用侧使用连接池(如 HikariCP)避免频繁创建连接导致并发抖动。
- 日志与熔断:为关键服务配置熔断和降级策略,记录请求耗时以便回溯。
6.
恢复与预防配置示例
- sysctl 优化示例:net.core.somaxconn=1024;net.ipv4.tcp_tw_reuse=1;vm.swappiness=10。
- 文件描述符与限额:设置 ulimit -n 65536,编辑 /etc/security/limits.conf 对应用户生效。
- 防护工具:部署 fail2ban、rate-limit、mod_evasive 或 Nginx ngx_http_limit_conn_module。
- 监控告警:Prometheus + Node Exporter,关键告警:丢包率 >5%、iowait>30%、bandwidth>70%。
- 定期演练:每季度进行故障演练、备份恢复测试与 DDoS 演练,形成 S.O.P。
7.
真实案例与服务器配置数据示例
- 案例概述:某电商在台湾机房的 VPS(3 核 6GB)在促销期间出现页面超时,带宽突增导致 503 错误。
- 诊断过程:mtr 显示到出口链路在本地第 3 跳开始丢包 40%,tcpdump 捕获大量 UDP/80 虚假流量。
- 应对动作:临时在 iptables 增加速率限制并联系机房启用清洗,随后接入 CDN 缓存热点页面。
- 结果:带宽峰值从 800Mbps 降到清洗后 120Mbps,页面 95% 响应时间从 1.8s 提升到 0.45s。
- 建议:长期增加监控、扩大带宽冗余并配置 CDN/清洗服务。
8.
示例服务器配置表(示意)
| 项 | 配置 | 说明 |
| CPU | 3 vCPU | 适中并发场景 |
| 内存 | 6 GB | 缓存与 DB 缓冲 |
| 带宽 | 1 Gbps(共享) | 注意峰值清洗需求 |
| 磁盘 | 100 GB NVMe | 低延迟 I/O |
| 系统 | Ubuntu 20.04 | 长期支持 |