标准答案
- 客户端先解析 URL,并检查本地缓存、连接复用、DNS 缓存和代理配置。
- 需要新建连接时,会完成 DNS 解析、TCP 建连;HTTPS 还会进行 TLS 握手和证书校验。
- 请求可能先经过 CDN、反向代理、负载均衡或 API 网关,再被转发到具体服务实例。
- 服务端依次经过鉴权、参数校验、业务逻辑、缓存或数据库等依赖调用,生成状态码、响应头和响应体后回传。
- 客户端收到响应后会按状态码、响应头和响应体处理结果;链路中任一层超时、拒绝连接或返回错误,都会表现为接口失败。
题目解析
同一个“接口慢”可能发生在 DNS、建连、TLS、网关排队、应用线程池、数据库或响应传输阶段。把请求按阶段打点,才能区分网络问题和业务问题。
HTTP 请求不一定每次都重新建连。连接池、Keep-Alive、HTTP/2 多路复用和缓存会改变实际链路,因此排查时要同时看客户端、网关和服务端日志。
常见误区
- 把一次请求简单理解成“客户端直接调用 Controller”,忽略 DNS、TLS、代理和下游依赖。
- 看到 5xx 就直接修改业务代码,没有先确认错误来自网关、应用还是依赖服务。
- 只记录总耗时,无法判断时间到底消耗在哪个阶段。