ECS: xDoctor RAP153. На узлах ECS достигнуто предельное количество подключений (1000), новых подключений нет
Summary: Приложению при чтении и записи в ECS не удается установить дополнительные подключения через сокеты. В некоторых сценариях эта проблема может привести к потенциальной недоступности данных, если приложение открывает чрезмерное количество подключений, превышающее ограничения подключений по умолчанию. ...
Symptoms
Приложению не удается установить новые сетевые подключения для запросов HTTPs.
Cause
Узлы ECS имеют ограничение на 1000 подключений на узел. Если этот лимит превышен, dataheadsvc Отображается следующая ошибка:
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}]
Чтобы просмотреть дополнительные сведения, проанализируйте журналы с помощью команды svc_log для подсчета записей для "Достигнуто ограничение подключения (1000)" за последние 30 минут.
Команды:
# 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
Пример:
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
Как правило, эта проблема связана с тем, как приложение открывает и закрывает сетевые подключения. Приложение пользователя или подсистема балансировки нагрузки должны обрабатывать соединения и закрывать их после завершения. Приложение всегда должно пытаться устранить проблему на своей стороне, прежде чем менять ECS, так как это приводит к увеличению нагрузки на ECS.
Чтобы определить проблему, используйте netstat во время события, чтобы получить IP-адреса, у которых установлены соединения.
Команды:
# sudo ss | grep 9020
Пример:
admin@ecsnode1:~> sudo ss | grep 9020 ESTAB 0 0 [::ffff:10.xx.xxx.71]:9020 [::ffff:10.xxx.xxx.9]:56134
Чтобы просмотреть количество подключений в текущий момент времени, используйте следующую команду:
admin@ecsnode1:~> sudo ss -tn sport = :9020 | wc -l