O que geralmente torna os websockets diferentes do seu loadbalancing diário é o fato de que você acaba tendo uma alta quantidade de conexões simultâneas em comparação com a taxa de chegada. Essa é uma distinção importante nos sistemas, portanto, se não estiver claro, dê uma olhada nesta resposta minha .
Então, seja qual for o seu problema, meu palpite é que isso ocorre quando você atinge um certo limite de conexões simultâneas . Aqui está o meu melhor palpite com base nas informações que você forneceu:
Os sockets da Web de back-end contêm três servidores. O balanceador de carga fala com todos eles do mesmo IP. Isso significa que você tem um total de IPs de destino source_port_range *. Isso parece algo como:
[root@ny-kbrandt01 ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
[root@ny-kbrandt01 ~]# echo $(( (61000-32768) * 3 ))
84696
Então, quando você acessa algo em torno de 84k conexões, suas instâncias haproxy são carentes de portas de origem, picos de CPU, como acontece com a coleta de lixo para encontrar mais portas de origem.
Se não for, aposto que é algo nesse beco, monitore suas conexões simultâneas usando a página de estatísticas do haproxy e monitore sua CPU para entender melhor o que está acontecendo quando as coisas ficam lentas.