502 casos de erro causados pelo tempo limite de conexão do SpringBoot

1. Descrição do problema

Nginx é usado para implementar roteamento e encaminhamento entre sistemas internos.

Mas recentemente descobri que existe um sistema que costuma reportar erros 502, chegando a centenas de vezes por dia, o que é completamente insuportável.

2. Investigação de causa

Então verifiquei e descobri que o pessoal de configuração entendia a unidade de tempo limite de conexão ( server.tomcat.connection-timeout) como segundos, mas na verdade era milissegundos.

Parte da configuração do SpringBoot é a seguinte:

# Tomcat
server:
  tomcat:
    uri-encoding: UTF-8
    max-threads: 1000
    min-spare-threads: 30
    connection-timeout: 60 # 错误在这里
  port: 18080
  servlet:
    context-path: /
  max-http-header-size: 102400

O valor da configuração original é que 60se o GC for encontrado durante o processo de estabelecimento da conexão do cliente, e o tempo de pausa do GC atingir um total de mais de 60ms, o Tomcat verá que o tempo limite se esgota, o que fará com que a conexão não for estabelecido e o Nginx o enviará ao cliente. end retornará um erro 502.

3. Soluções

Modifique o tempo limite da conexão, por exemplo, modifique-o para 【server.tomcat.connection-timeout=6000】, conforme mostrado abaixo:

# Tomcat
server:
  tomcat:
    uri-encoding: UTF-8
    max-threads: 1000
    min-spare-threads: 30
    connection-timeout: 6000
  port: 18080
  servlet:
    context-path: /
  max-http-header-size: 102400

problema resolvido.

Claro, o erro 502 não se limita a este motivo, e o link Nginx precisa ser verificado.

Autor: https://renfufei.blog.csdn.net/

Hora: 2 de setembro de 2020

Acho que você gosta

Origin blog.csdn.net/renfufei/article/details/108356534
Recomendado
Clasificación