18.04.3에서 ~120,000이 활성화된 후 서버가 연결 수락을 중지합니다.

18.04.3에서 ~120,000이 활성화된 후 서버가 연결 수락을 중지합니다.

저는 포트에서 수신 대기하고 로컬 네트워크의 다른 여러 컴퓨터에서 연결을 받는 4개의 IP 주소가 있는 간단한 TCP 서버를 사용하여 일종의 성능 테스트를 실행하고 있습니다. 최대 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

단지 테스트이기 때문에 한계는 의도적으로 완전히 과도합니다. 더 많은 연결을 가능하게 하는 누락된 다른 설정이 있습니까? CPU나 RAM 모두 스트레스를 받지 않으므로 하드웨어를 계속 추진하고 싶습니다. 서버와 클라이언트는 모두 AWS EC2 t3a.xlarge 인스턴스에서 실행됩니다(차이가 있는 경우).

답변1

알고 보니 AWS의 한계였습니다. 동일한 VPC 내의 EC2 인스턴스 간 통신에는 약 120,000개의 활성 연결 제한이 있는 것으로 보입니다. 공용 IP를 사용하여 통신하도록 하면 제한이 없어졌습니다. OS가 아무 것도 제한하지 않았기 때문에 Ubuntu에서는 오류가 발생하지 않았습니다.

관련 정보