Springboot TomcatEmbeddedServletContainer KeepAliveTimeout funktioniert nicht

Ich habe das Keep Alive Timeout im Frühjahr auf 30 Sekunden eingestellt. Also benutze ich unten in der Application.java,

@Bean   
public EmbeddedServletContainerFactory getEmbeddedServletContainerFactory() {
    TomcatEmbeddedServletContainerFactory containerFactory = new TomcatEmbeddedServletContainerFactory();
    containerFactory
            .addConnectorCustomizers(new TomcatConnectorCustomizer() {
                @Override
                public void customize(Connector connector) {
                    ((AbstractProtocol) connector.getProtocolHandler())
                            .setKeepAliveTimeout(30000);
                }
            });

    return containerFactory;
}

Dann schlafe ich einen Anfrage-Thread für 40 Sekunden von meinem Rest-Controller. Aber wenn ich eine Anfrage über Postbote mache, gibt es erfolgreich den HTTP-Statuscode 200 zurück, stattdessen sollte es einen Gateway-Zeitüberschreitungsfehler zurückgeben.

Ich versuche sowohl setConnectionTimeout als auch setKeepAliveTimeout und es hat nicht funktioniert.

Was fehle ich hier?

Frage bearbeiten: Mein erstes Problem

Lassen Sie mich die ursprüngliche Frage von mir erklären, die mich dazu veranlasst hat, die obige Frage zu stellen.

Nun habe ich einen langen Umfrageprozess, der normalerweise mehr als 5 Minuten dauert.

Was passiert, ist, wenn ich die Rest-API für Longpoll aufrufe. Nach 2,2 Minuten erhalte ich einen 504-http-Fehler im Browser.

Ich verwende eine AWS-Umgebung, in der ich einen ELB und einen HAProxy habe, die in der AWS EC2-Instanz installiert sind.

aut AWS-Dokument heißt esdas Standard-Zeitlimit für die Verbindung im Leerlauf von ELB beträgt 60 Sekunden. Also habe ich es auf bis zu 30 Minuten erhöht.

Darüber hinaus heißt es,

Wenn Sie HTTP- und HTTPS-Listener verwenden, empfehlen wir, die Keep-Alive-Option für Ihre EC2-Instanzen zu aktivieren.Sie können Keep-Alive in Ihren Webserver-Einstellungen aktivieren. oder in den Kernel-Einstellungen für Ihre EC2-Instanzen.

So haben Sie das eingebettete Tomcat-Keep-Alive-Timeout wie oben beschrieben auf 30,2 Minuten erhöht

So jetzt erwarte ich, dass meine lange Abstimmungsanforderung abgeschlossen ist, ohne einen Fehler 504 zu erhalten. Aber immer noch bekomme ich 504 Fehler im Browser?

Ref:AWS dev guide

Antworten auf die Frage(2)

Ihre Antwort auf die Frage