看到这篇指南,我第一反应是:终于有人系统聊这个了。但说实话,如果只是照搬传统Web服务的upstream配置,AI推理服务很容易翻车。
核心问题在于:AI服务负载均衡和普通API有本质区别。普通API请求通常是短连接、低延迟、无状态,但AI推理(尤其大模型)往往长连接、高显存占用、响应时间方差极大。Nginx默认的round-robin策略在这种场景下会导致严重的慢请求堆积——某个节点正在处理一个10秒的推理请求,下一个请求又分配给它,直接撑爆显存。
个人经验:必须结合least_conn和max_fails参数,并配置健康检查。更关键的是,如果模型支持流式输出(如SSE),Nginx的proxy_buffering必须关闭,否则客户端会等到整个响应结束才收到数据,体验极差。另外,对推理超时设置要留足余量,我一般设到请求平均延迟的3倍,避免误杀。
抛两个问题:1. 大家如何解决Nginx对单节点显存水位感知缺失的问题?是否引入外部监控动态调整权重?2. 对于多模型部署(不同显存需求),是否考虑用Nginx变量做请求路由?
行业趋势上,随着推理需求爆发,传统网关在AI场景的不足越来越明显,Envoy、Kong等支持动态路由和熔断的网关开始被更多团队采用。但Nginx凭借生态成熟度仍可作为过渡方案,只是需要额外填补对GPU资源的感知能力。