干这行三年多,我手机里存得最多的截图就是各种报错码。凌晨两点被电话吵醒,那头火急火燎:“API挂了!业务全停!” 我眯着眼扫一眼错误信息,有时候真想回一句——大哥,这是你家网络波动,不是模型炸了。

但这话不能直接说,得带着对方一起把脉。API调不通,病因就那么几个:模型节点瘫了、你的管道堵了、平台网关限了。 我这儿有个三板斧的“断案”流程,你拿着这套逻辑去查,五分钟内就能锁定元凶。

第一步:看报错码,这玩意儿比算命准。

报错码是最直接的线索,比任何猜测都靠谱。

  • 5xx系列(500/502/503/504):这是服务端在喊救命。500是平台内部程序崩了,502是网关连接不上后端,503是服务器过载在排队,504是处理超时——模型算得太慢,网关等得不耐烦直接掐了连接。这些基本指向平台或模型侧的问题,别折腾你的网络。

  • 429 Too Many Requests:这是最典型的限流。你每秒请求数(RPM)或者每天Token总量(TPD)超了配额。平台在说:“兄弟,歇会儿,别这么猛。”

  • 4xx系列(401/403/429除外):比如400 Bad Request,那是你的请求体格式写错了——JSON少了个逗号,或者参数类型不对。这是你自己的锅,跟平台、网络、模型都没关系。

第二步:做分流测试,把网络和平台剥离开。

拿到报错码之后,下一个动作很关键——排除本地网络干扰

你在自己公司内网调不通,别急着骂平台。公司防火墙、代理服务器、甚至某些地区的运营商DNS劫持,都可能导致连接失败。怎么办?

在你的服务器上跑一个简单的curl命令,直接请求平台的健康检查接口。如果这个通了,但业务接口超时,那问题大概率出在平台的业务层处理。如果连健康检查都超时,直接换个网络环境——用手机5G热点试一下。热点能通,内网不通,那就回去找你们IT部门,99%是防火墙策略或者代理配置把出口IP封了。

这套操作能把本地网络问题从嫌疑名单里彻底排除。

第三步:查平台的状态页和社区,判断是不是“公案”。

排除掉自己这边的问题后,就该看看是不是平台的集体事故了。

  • 去平台官网找Status Page(状态页)。正经平台都会实时更新可用性和故障记录。如果上面显示“服务降级”或者“部分区域不可用”,那就不用折腾了,等官方修复。

  • 去技术社区(比如V2EX、即刻、甚至相关技术群)扫一圈。如果大家都在哀嚎,那就是区域性故障或者模型大面积限流。如果只有你在喊,那问题大概率还在你自己这一侧。

第四步:用“灰度对比”锁定是模型还是网关。

假设平台状态页一切正常,但你的业务还是频繁504超时。这时候就要判断——是模型推理太慢,还是平台网关扛不住了?

操作很简单:临时切一个轻量级模型。把你代码里调用的模型名,从“gpt-4o”换成“gpt-3.5-turbo”或者“deepseek-v3”这类响应更快的模型。

  • 如果轻量级模型秒回,一切正常,那问题就明确了——重模型在处理你的复杂Prompt时计算量过大,超出了平台网关设置的超时阈值(比如60秒)。解决方案?优化你的Prompt长度、拆解复杂任务、或者启用流式输出(Stream)来避免网关超时断开。

  • 如果轻量级模型也超时报错,那矛头就得指向平台网关层了——可能是平台在升级、或者突增的流量导致网关排队。这时候别犹豫,直接切备用平台(如果你们接了多平台),或者联系客服提工单。

除了故障定位,日常怎么预防?

干运维的,不能只当救火队员。这四件事做在前面,能少熬一半的夜。

第一,超时时间别写死。 代码里把连接超时(Connect Timeout)设短点(比如5秒),读取超时(Read Timeout)设长点(比如120秒)。别让请求傻等,快速失败比死等更优雅。

第二,客户端退避策略要带上。 遇到429限流,别立刻重试。用指数退避——第一次等1秒,第二次等2秒,第四次等8秒。别把平台的限流报警给冲爆了。

第三,多平台接入,搞个自动故障转移。 我们内部的做法是,主平台出现连续错误率超过5%时,自动把20%的流量切到备选平台。用户完全无感知。

第四,加一层监控面板。 别只盯着业务日志。用Prometheus或者云厂商的监控服务,把错误率、平均响应时间(P95/P99)、限流触发次数做成看板。曲线一抬头,你就知道要出事了,不用等用户来报。

说句掏心窝的话,API出问题的时候,大多数人的第一反应就是“平台垃圾”。但我处理过的故障里,真正平台大面积宕机的,不到两成。 剩下八成,要么是你代码里的超时设得太短,要么是公司网络策略变动,要么是某个突然火了的Prompt把模型算力撑爆了。

学会这套“看码→切网→查状态→换模型”的四步法,比你在群里问一百句“有人跟我一样吗”都管用。干这行,最终拼的不是谁模型调得溜,拼的是谁故障恢复得快