ECS: xDoctor RAP153: Verbindungslimit (1000) auf ECS-Nodes erreicht, keine neue Verbindung
Summary: Die Anwendung kann in ECS keine weiteren Socket-Verbindungen herstellen. In einigen Szenarien kann dieses Problem zu einer potenziellen Nichtverfügbarkeit von Daten führen, wenn die Anwendung übermäßige Verbindungen öffnet, die über die Standardverbindungslimits hinausgehen. ...
Symptoms
Die Anwendung kann keine neuen Netzwerkverbindungen für HTTPS-Anforderungen herstellen.
Cause
ECS-Nodes haben ein Verbindungslimit von 1.000 pro Node. Wird dieser Grenzwert überschritten, dataheadsvc zeigt den folgenden Fehler an:
169.xxx.2.9 2021-02-24T21:13:08,792 [qtp85102332-247-acceptor-1@4fda771a-TrafficMetricsNetworkTrafficServerConnector@49de2cc4{HTTP/1.1,[http/1.1]}{10.xxx.xxx.xxx:9020}] INFO ConnectionLimit.java (line 177) Connection Limit(1000) reached for [TrafficMetricsNetworkTrafficServerConnector@49de2cc4{HTTP/1.1,[http/1.1]}{10.xxx.xxx.xxx:9020}, TrafficMetricsNetworkTrafficServerConnector@4e293c35{SSL,[ssl, http/1.1]}{10.xxx.xxx.xxx:9021}]
Um weitere Informationen anzuzeigen, analysieren Sie die Protokolle mit svc_log , um die Einträge für "Verbindungslimit (1000) erreicht" in den letzten 30 Minuten zu zählen.
Befehle:
# svc_log dataheadsvc "Connection Limit(1000) cleared" -start "30 minutes ago" -sh -st minute # svc_log dataheadsvc "Connection Limit(1000) cleared" -start "24 hour ago" -sh -st hour
Beispiel:
admin@node1:~># svc_log dataheadsvc "Connection Limit(1000) cleared" -start "30 minutes ago" -sh -st minute
svc_log v1.0.24 (svc_tools v1.8.6.0) Started 2021-02-26 18:47:10
Running on nodes: <All nodes>
Time range: 2021-02-24 21:00:00 - 2021-02-24 21:30:59
Filter string(s): 'Connection Limit(1000) cleared'
Show nodename(s): True
Search reclaim logs (if any): False
Count of message occurrences per minute:
# Log
Time Entries
------------------------------
2021-02-24 21:01:xx 0
2021-02-24 21:02:xx 0
2021-02-24 21:03:xx 0
2021-02-24 21:04:xx 41
2021-02-24 21:05:xx 134
2021-02-24 21:06:xx 8
2021-02-24 21:07:xx 10
2021-02-24 21:08:xx 11
2021-02-24 21:09:xx 0
2021-02-24 21:10:xx 0
2021-02-24 21:11:xx 0
2021-02-24 21:12:xx 412
2021-02-24 21:13:xx 650
2021-02-24 21:14:xx 0
2021-02-24 21:15:xx 0
2021-02-24 21:16:xx 0
2021-02-24 21:17:xx 0
2021-02-24 21:18:xx 0
2021-02-24 21:19:xx 0
2021-02-24 21:20:xx 0
2021-02-24 21:21:xx 0
2021-02-24 21:22:xx 0
2021-02-24 21:23:xx 0
2021-02-24 21:24:xx 0
2021-02-24 21:25:xx 0
2021-02-24 21:26:xx 0
2021-02-24 21:27:xx 0
2021-02-24 21:28:xx 0
2021-02-24 21:29:xx 0
2021-02-24 21:30:xx 0
Total: 1266
Resolution
Bei diesem Problem handelt es sich in der Regel um ein Anwendungsproblem, bei dem es darum geht, wie die Anwendung Netzwerkverbindungen öffnet und schließt. Die Anwendung oder der Load Balancer des Benutzers sollte die Verbindungen verarbeiten und die Verbindungen schließen, sobald sie abgeschlossen sind. Die Anwendung sollte immer zuerst versuchen, das Problem auf ihrer Seite zu lösen, bevor ECS geändert wird, da dies zu einer höheren Belastung des ECS führt.
Um das Problem zu identifizieren, verwenden Sie netstat während des Ereignisses, um die IPs abzurufen, die Verbindungen hergestellt haben.
Befehl:
# sudo ss | grep 9020
Beispiel:
admin@ecsnode1:~> sudo ss | grep 9020 ESTAB 0 0 [::ffff:10.xx.xxx.71]:9020 [::ffff:10.xxx.xxx.9]:56134
Verwenden Sie diesen Befehl, um die Anzahl der Verbindungen in der aktuellen Zeit anzuzeigen:
admin@ecsnode1:~> sudo ss -tn sport = :9020 | wc -l