Nginx 失败重试机制

重试导致性能问题

错误配置了重试参数导致 Nginx 代理性能出现异常

默认的 error/timeout 是不会出现这种问题的。在定义重试场景时,需要结合业务情况来确定是否启用自定义错误重试,而不是单纯去复制其他服务的配置。比如对于某个业务,没有明确自己业务情况,去网上复制了 Nginx 配置,其中包括了:

proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;

那么只需要随便定义一个不存在的 URI 去访问该服务频繁去请求该服务,就可以重复触发 Nginx no live upstreams 报错,这在业务高峰情况下,性能将受到极大影响。同样,如果使用的代码框架存在不标准 HTTP 处理响应情况,恶意构造的请求同样也会造成类似效果。

因此在配置重试机制时, 必须先对业务的实际情况进行分析,严谨选择重试场景。