1. 初步判断与准备(先别盲目重启)
1) 确认受影响范围:单用户慢、某地域慢还是全部用户慢;记录出现时间段和波动规律。
2) 收集基本环境:操作系统(例如:Ubuntu 20.04)、虚拟化类型(KVM/VMware/Cloud)、机房(Singapore - Equinix等)。
3) 准备远端测点:使用国内/香港/澳大利亚/印尼几台测试机做ping、mtr、curl对比;确保测试工具版本一致。
4) 记录资源基线:CPU、内存、磁盘IO、网卡带宽与丢包率,建议采样周期不少于5分钟。
5) 常用命令:ping -c 10 IP;mtr -r -c 100 IP;iperf3 -c IP;ss -tnlp;top/iostat -xk 1 5,用于后续对比。
2. 网络层排查(最常见的问题)
1) 延迟与丢包检查:mtr(或traceroute)能定位到哪一跳出现丢包或高延迟,若是出口ISP问题需联系带宽提供商。
2) 带宽饱和度:使用iftop、nload或vnstat查看实时带宽,确认是否被某些连接占满(例如异常上传/下载)。
3) MTU与分片问题:通过ping -M do -s 测试分片(例如:ping -M do -s 1472 target),若路径MTU过小会导致性能下降。
4) 路由不优/劣化:检测到到中国/东南亚跳数异常时考虑更换到具有更好对等互联的ISP或机房。
5) 示例命令与阈值:平均RTT>80ms或丢包>1%应报警;带宽利用率长期>80%需扩容或限速。
3. 主机资源与服务端瓶颈排查
1) CPU与内存:top观察load平均值,若load>CPU核数或swap频繁使用说明CPU/内存是瓶颈。
2) 磁盘IO:iostat -x 1 5查看await/await>20ms或%util长期接近100%需优化磁盘(SSD/RAID/缓存)。
3) 网络socket与连接:ss -s与ss -tan查看TIME_WAIT/SYN_RECV异常增多可能是DDOS或连接泄露。
4) 应用层耗时:使用strace、perf或慢查询日志(MySQL slow query)定位高耗时操作。
5) 示例配置:Nginx worker_processes auto; worker_connections 4096;PHP-FPM pm.max_children=50;MySQL innodb_buffer_pool_size=8G(根据内存配置调整)。
4. 应用与数据库优化(经常能见到明显提升)
1) 静态资源缓存:把css/js/png等放到CDN或设置长缓存头,减少服务器请求数。
2) 数据库索引与慢查询优化:开启慢查询日志,样例调整:EXPLAIN分析后加索引或拆表,避免全表扫描。
3) 连接池与Keepalive:启用HTTP keep-alive,数据库用连接池(例如:PgBouncer或MySQL Proxy)降低连接创建成本。
4) 压缩与协议调整:启用GZIP/Brotli,使用HTTP/2或QUIC(若支持)以减少握手与头部开销。
5) 缓存策略示例:Redis作为热点缓存,设置TTL;Nginx fastcgi_cache用于动态页面缓存,缓存命中率>80%为佳。
5. CDN、DNS与DDoS防护策略
1) CDN接入:将静态和可缓存的动态内容交给CDN(例如Cloudflare/阿里云CDN)可显著降低新加坡源站压力并缩短全球响应时间。
2) DNS解析优化:使用多个Anycast DNS节点,TTL合理设置,避免单点解析延迟。
3) DDoS防护:部署云端清洗(scrubbing)或使用WAF,设置速率限制与黑名单规则。
4) iptables/connlimit示例:iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 200 -j DROP;结合fail2ban限制恶意连接。
5) 真实策略:生产环境建议源站仅允许CDN节点访问,源站端口只对CDN/管理IP开放,减少暴露面。
6. 真实案例与对比数据(优化前后量化效果)
1) 案例背景:某电商在新加坡的VPS(KVM,2vCPU/4GB RAM/100Mbps,Ubuntu 18.04),用户投诉页面打开慢、下单超时。
2) 排查结果:mtr发现到国内某跳点丢包高达5%,VPS端CPU常驻90%,磁盘IO等待7ms,Nginx keepalive设置不当导致大量短连接。
3) 优化措施:更换至1Gbps带宽机型、开启TCP BBR、Nginx调优、启用CDN并修正慢SQL索引。
4) 优化后效果:观测到响应时间和资源占用明显改善,以下为对比数据表格。
| 指标 | 优化前 | 优化后 |
| 平均Ping(ms) | 120 | 15 |
| 首页TTFB(ms) | 900 | 120 |
| CPU平均占用 | 90% | 35% |
| 磁盘IO等待(ms) | 7 | 1.2 |
| 吞吐(MB/s) | 40 | 120 |
7. 长期监控与运维建议(避免问题复现)
1) 建立监控看板:Prometheus + Grafana监控CPU/内存/网络/IO/响应时间,设置告警阈值并联动工单。
2) 日志与审计:统一收集访问/错误/慢查询日志,按天归档并定期分析热点与异常。
3) 灾备与扩容策略:准备冷备与热备节点,使用负载均衡器(例如:HAProxy/NGINX或云LB)实现自动扩容。
4) 定期演练:半年度进行DDoS演练与流量爆发测试,验证限流与清洗策略。
5) 建议阈值举例:内网丢包>0.5%或平均RTT突增50%触发报警;磁盘io await>20ms触发磁盘替换或IO优化计划。
来源:新加坡服务器很慢怎么办 排查流程与优化方案大全