要定位瓶颈,先观测关键指标:CPU、内存、磁盘IO、网络带宽、每秒请求数(RPS)、平均响应时延、95/99百分位响应时延及后端错误率。关注负载均衡器的连接数、排队长度和健康检查失败率。
使用 Prometheus + Grafana、Zabbix、ELK 或云厂商监控(如阿里云/腾讯云/新加坡云监控)。采样间隔建议1分钟以内,关键热点可设为10-15秒。
先做单点压测(ab、wrk),比对真实流量下的指标差异;检查是否存在会话黏滞、长连接或后端慢查询导致的积压。
常用策略有轮询(Round Robin)、最少连接(Least Connections)、源IP哈希(IP Hash)、加权轮询。轮询适合均匀、短连接请求;最少连接适合长连接或请求耗时差异大的后端;IP哈希用于需要会话粘性但不依赖cookie的场景。
对于HTTP建议用基于cookie或header的会话保持,配合HTTP/2或gRPC能减少连接数;对于TLS终端建议启用会话复用与TLS会话票据来降低握手开销。
根据后端性能给节点分配权重,结合主动与被动健康检查剔除不良实例,避免把流量打给高延迟或错误率节点。
采用GSLB/GeoDNS或云厂商的智能DNS(基于延迟/地理/权重)进行首跳决策;结合Anycast或CDN把静态内容下沉到边缘节点,减少跨区流量。
数据库与会话采用异步复制或多主写策略(需冲突解决);对状态敏感服务可使用集中化会话存储(Redis/Session DB)或无状态化改造,避免用户在跨区切换时丢失会话。
设置跨区健康探测与自动故障转移(短路器),并通过流量镜像与演练验证切换路径,保证切流时延最小化。
调整操作系统参数:tcp_tw_reuse、tcp_fin_timeout、net.core.somaxconn、ulimit -n;对Nginx/HAProxy调大worker_connections、worker_processes并启用accept_mutex优化并发接受能力。
启用Keep-Alive、HTTP/2或QUIC以减少握手开销;使用本地缓存、CDN与前端缓存层(Varnish、Nginx cache)减少到后端的请求数,开启gzip/brotli压缩以节省带宽。
启用TLS会话缓存与票据复用,使用现代密码套件和硬件加速(AES-NI/SSL卸载)来降低CPU占用;对长连接应用考虑心跳与超时策略避免资源泄露。
结合监控指标自动触发扩缩容(Horizontal/Vertical scaling),使用基础镜像与容器化(Docker/Kubernetes)实现快速扩容与回滚。
通过流水线实现配置与规则的自动发布(例如Nginx/HAProxy配置模板+Ansible/Terraform),采用蓝绿或灰度策略降低发布风险,实时回滚减少性能影响。
建立SLO/SLA与错误预算,设定多级告警并结合自动化故障恢复策略;定期进行压力测试与混沌工程演练,验证在宝安和新加坡两个站点的故障场景下流量切换与性能保障。