卡顿这东西不会消失,只会搬家。阿里云负载均衡上线那天,监控上的平均响应时间好看了,首页刷一下就出来,谁都以为问题解决了。过两天投诉又冒出来:下单按钮转圈、后台上传图片传到一半断、后台点保存没反应。负载均衡不是加速器,它干的事是把请求分出去,原来挤在一台机器上的毛病被摊开了,卡点就跑到别的地方去了。麻烦在于这些新卡点以前没人盯,所以显得特别突然。

阿里云负载均衡上线后,最先变的是「谁在卡」
单机时代判断很简单,卡就是 CPU 满了、内存见底、磁盘 IO 打满,top 一眼就看出来。上了负载均衡,入口那一层把 TLS 握手、连接管理这些活儿接了过去,后端机器 CPU 反而往下降了一截。指标好看,可用户算的是从点击到看见结果的总时间。中间多了一跳转发、多了一次排队、多了一段内网往返。短连接、小响应的站点基本感觉不到;长连接、响应体大、后端处理本身就慢的站点,这几段叠加起来就很显眼。所以先别急着骂负载均衡没用,先确认一下你量的是哪一段的时间。
后端「看着都没事」,用户却说慢
我见过太多这种场面:后端监控一片绿,CPU 三成不到,运维说没毛病,业务方说就是慢。这里有个坑——负载均衡分的是请求数,不是处理能力。两台后端权重一样,可一台上面还跑着定时任务、另一台刚重启缓存是空的,结果是快的那台被拖住,慢的那台又占着名额。加权轮询的权重按实际处理能力调,别按核数拍脑袋,压测跑一轮再定。还有个更常见的,数据库连接池先顶不住。请求被均匀地撒到后端,后端的查询又同时砸向同一个库,库那边一排等锁,前端表现就是随机几个人卡。
会话丢了,这种卡最冤
未登录的时候一切正常,一登录就出幺蛾子:刚登录又让登录、购物车清空、验证码每次都不一样。多台后端,session 落在本地文件里,第一次请求落到 A,第二次落到 B,B 不认识你。用户描述不出来,只会说「卡」。解法两条:一是会话保持,四层按源 IP 粘,七层按 cookie 插入;二是干脆把 session 挪到共享存储,Redis 之类,后端无状态。会话保持不是万灵药,移动网络切基站、公司出口 NAT 一变,源 IP 就换了,照样掉。cookie 方式稳一些,但要留意 cookie 名跟后端框架别打架,同名冲突排查起来能耗一下午。具体参数以控制台和官方文档的说明为准,别照抄别人的博客。
真实 IP 没了,日志、防护、统计跟着乱
这条最容易被忽略,后果也最烦人。请求过了负载均衡,后端看到的来源 IP 是负载均衡的内网地址,访问日志里一片一模一样的内网 IP。接着防火墙、防 CC、限流全都按那个 IP 算,一个「IP」能刷出天量请求,规则一开先把自己人封了。要拿真实 IP,就得看 X-Forwarded-For 或者 X-Real-IP。Nginx 里 set_real_ip_from 加 real_ip_header,日志格式里带上 $http_x_forwarded_for,改完还得回头验证一遍采集规则对不对。提醒一句,这些头是可以伪造的,别直接拿来做权限判断或者风控的唯一依据。顺带说,搜索引擎爬虫的来访 IP 也变了,你要是有校验爬虫真假的脚本,得重新对一遍,不然日志里全是「抓取异常」,白白吓自己一跳。
健康检查查得太勤,也是负担
默认几秒探一次,后端机器一多,探测请求成倍往上涨。静态页还好,健康检查要是打到了一个要查库的接口,等于每天凭空多出一堆业务请求。查得松,挂掉的机器摘不掉;查得紧,又给后端加活。一般做法是给一个专门的轻量接口,比如 /healthz,只返回 200,别在里面查库、别穿缓存层。超时时间要跟业务最长响应时间对齐,设太短会把慢但正常的实例误摘,摘了加、加了摘,来回抖动,用户在那边就感觉忽快忽慢。
缓存和压缩别干两遍
前面挂了 CDN,负载均衡上再开一层缓存,后端又开页面缓存,三层哪一层没对齐,用户拿到的就是旧内容,然后跟你说「改了没生效」。这种「卡」其实是版本没刷。gzip 也一样,负载均衡和后端同时开着,白烧 CPU 还多一道。规矩很朴素:能在边缘干的活就在边缘干,越靠后越少干。回源流量上完负载均衡后一般会变大一点,别只看带宽峰值,看一眼回源比例更实在。
上完负载均衡,我一般先看这几样
整理成一份能照着做的清单:日志里翻一条,确认真实 IP 传下来了没有;会话存在哪、掉了用户是什么表现;健康检查打的是哪个路径、多久一次;权重跟压测出来的处理能力对不对得上;后端的 keepalive 配了没,没配的话每个请求都新建连接,负载均衡那一侧的连接数会非常难看;长连接和超时设置跟业务是否匹配;CDN 和负载均衡的缓存、压缩是不是重复开了;最后看一眼搜索爬虫的来访日志,抓取量有没有莫名其妙的起落。
说到底,负载均衡解决的是「一台机器扛不住」这件事,它没义务把你的慢代码变快。上线之后卡的地方变了,这是正常的,说明原来那台机器的瓶颈确实被绕过去了。接下来该干的是找到新瓶颈,别守着旧监控面板说「各项指标都挺好」——指标好和用户不卡,本来就不是一回事。
【版权声明】:本站内容若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!