Netty Server schließt den Socket nicht

8

Ich habe in meiner netty Server-Anwendung ein Ressourcenproblem.

%Vor%

Als Workaround habe ich die maximal geöffneten Dateien mit ulimit -n erhöht, aber ich kann immer noch die Anzahl der Dateien / Sockets erhöhen:

%Vor%

jetzt weit über 3000 ...

Kann keine offenen oder hängenden Verbindungen mit netstat sehen ...

Ich benutze einen ReadTimeoutHandler, um unbenutzte Verbindungen mit einem folgenden Ausnahme-Handler-Code zu schließen:

%Vor%

Server Bootstrap sieht so aus:

%Vor%

Habe ich etwas verpasst? Sollte sich die Anzahl der geöffneten Dateien nicht verringern, sobald eine Verbindung geschlossen wird (entweder vom Remote-Host oder vom Timeout-Handler)?

Was muss ich ändern, um Ressourcen zu sparen?

Aktualisieren : Ich verwende netty 4.0.25

Update 2: Wie gewünscht habe ich den Logging-Handler vor den ReadTimeouthandler gestellt, hier sind die Logs. Situation, in der der Client normalerweise die Verbindung trennt:

%Vor%

Situation, in der der Client NICHT trennt:

%Vor%

Also gibt es 60s Lücke vor dem Schließen (wie von ReadTimeoutHandler erwartet)

Nach einigen weiteren Analysen habe ich den Eindruck, dass selbst bei einer normalen Trennung vom Client die Anzahl der geöffneten Dateien steigt! Außerdem gibt es in dieser Situation kein CLOSE () ...

    
rik 02.03.2015, 14:59
quelle

1 Antwort

1

Vielleicht hängt es mit dieser Frage zusammen: Ссылка

  

Dies ist das erwartete Verhalten und kann nicht geändert werden. Das   JVM signalisiert, dass es den Kanal nicht akzeptieren kann   Es kann keine Verbindung hergestellt werden und es kann keine Antwort gesendet werden. Der Kunde   sieht einen Verbindungsfehler. Wenn Sie einen Lastenausgleich haben, sollte dies der Fall sein   Versuchen Sie es erneut mit einem alternativen Host oder geben Sie den 503 auf Ihrem Server zurück   Antrag.

    
alexey 29.06.2015 12:59
quelle

Tags und Links