Сервер прекращает принимать соединения после ~120 000 активных на 18.04.3

Сервер прекращает принимать соединения после ~120 000 активных на 18.04.3

Я запускаю своего рода perf-тест, где у меня есть простой TCP-сервер с 4 IP-адресами, который прослушивает порт и получает соединения от нескольких других компьютеров в локальной сети. Все работает отлично до чуть менее 120 000 активных соединений, клиенты могут получать сообщения от клиентов и создавать новые соединения. При чуть менее 120 000 новые соединения просто перестают появляться. На сервере нет активности в журнале, и через некоторое время у клиентов начинаются тайм-ауты. Нет никакого брандмауэра, который мог бы помешать. Я уже подправил кучу настроек:

/etc/sysctl.conf

net.core.netdev_max_backlog = 1000000

net.core.netdev_budget = 50000
net.core.netdev_budget_usecs = 5000

net.core.somaxconn = 1024000

net.core.rmem_default = 1048576
net.core.rmem_max = 16777216

net.core.wmem_default = 1048576
net.core.wmem_max = 16777216

net.core.optmem_max = 65536

net.ipv4.tcp_rmem = 4096 1048576 2097152
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.udp_rmem_min = 8192
net.ipv4.udp_wmem_min = 8192
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_max_syn_backlog = 3000000
net.ipv4.tcp_max_tw_buckets = 2000000

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 6
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_rfc1337 = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1

/etc/security/limits.conf

* soft nofile 6553600
* hard nofile 6553600
cat /proc/sys/fs/file-max
1621708

Ограничения намеренно полностью избыточны, потому что это всего лишь тест. Есть ли какие-то другие настройки, которые я упускаю, чтобы включить больше подключений? Ни ЦП, ни ОЗУ не нагружаются, поэтому я хотел бы продолжать нагружать оборудование. Сервер и клиенты работают на экземплярах AWS EC2 t3a.xlarge, если это имеет значение.

решение1

Оказалось, что это было ограничение AWS. Видимо, общение между экземплярами EC2 внутри одного VPC имеет ограничение на активные соединения около 120 000. Заставив их использовать публичный IP для связи, мы избавились от ограничения. Я не получал никаких ошибок в Ubuntu, потому что ОС ничего не ограничивала.

Связанный контент