Como dimensionar a máquina do servidor ejabberd no CentOS para lidar com conexões de 200 K?

Estou trabalhando em uma instância ejabberd consideravelmente boa com uma máquina com 40 núcleos e 160 GB de RAM.

O problema é que não consigo dimensionar até 200 K de conexões paralelas.

A configuração do sysctl é a seguinte:

net.ipv4.tcp_window_scaling = 1
net.core.rmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 16384 16777216
#http://linux-ip.net/html/ether-arp.html#ether-arp-flux
net.ipv4.conf.all.arp_filter = 1
kernel.exec-shield=1
kernel.randomize_va_space=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.all.accept_source_route=0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.ip_local_port_range = 12000    65535
fs.nr_open = 20000500


fs.file-max = 1000000
net.ipv4.tcp_max_syn_backlog = 10240
net.ipv4.tcp_max_tw_buckets = 400000
net.ipv4.tcp_max_orphans = 60000

net.ipv4.tcp_synack_retries = 3

net.core.somaxconn = 10000

As entradas do arquivo /etc/security/limits.conf são as seguintes:

*               soft    core            900000
*               hard    rss             900000
*               soft    nofile          900000
*               hard    nofile          900000
*               soft    nproc           900000
*               hard    nproc           900000

A máquina começa a perder conexões quando o servidor atinge cerca de 112 K.

Coisas que acontecem por volta de 112 K

O uso da CPU chega a 200 ~ 300% (mas é o pico usual)

Histórico - Quando tudo é normal, o uso da CPU dispara em até 80%, como visto abaixo (apenas duas CPUs estão realizando o trabalho)

Não consigo trabalhar na máquina. Estou usando o comando top e ss para ver o que está acontecendo no servidor. A máquina simplesmente para de responder nesse momento e as conexões começam a cair.

O que é uma graça salvadora é que as conexões não caem abruptamente, mas caem na velocidade em que estão conectadas.

Estou usando o TSUNG para gerar a carga. Existem 4 caixas geradoras de carga atingindo 4 ips diferentes mapeados para apenas uma máquina internamente.

Todas as sugestões, opiniões são muito bem-vindas.

questionAnswers(1)

yourAnswerToTheQuestion