A configuração net.core.somaxconnpara valores mais altos é necessária apenas em servidores de alta carga, onde a nova taxa de conexão é tão alta / rajada que ter 128 (50% a mais nos BSD's: 128 backlog+ 64 half-open) conexões ainda não aceitas é considerado normal. Ou quando você precisar delegar a definição de "normal" a um aplicativo em si.
Alguns administradores usam alto net.core.somaxconnpara ocultar problemas com seus serviços; portanto, do processo do ponto de vista do usuário, parecerá um pico de latência, em vez de uma conexão interrompida / tempo limite (controlado pelo net.ipv4.tcp_abort_on_overflowLinux).
listen(2)manual says - net.core.somaxconnage apenas no limite superior de um aplicativo que pode escolher algo menor (geralmente definido na configuração do aplicativo). Embora alguns aplicativos usem apenas, o listen(fd, -1)que significa definir backlog para o valor máximo permitido pelo sistema.
A causa real é a baixa taxa de processamento (por exemplo, um único servidor de bloqueio encadeado) ou o número insuficiente de processos / encadeamentos de trabalho (por exemplo, software multiprocesso / bloqueio por encadeamento como apache/ tomcat)
PS. Às vezes, é preferível falhar rapidamente e deixar que o balanceador de carga faça seu trabalho (tente novamente) do que fazer o usuário esperar - para esse fim, definimos net.core.somaxconnqualquer valor e limitamos a lista de pendências de aplicativos como, por exemplo, 10e definida net.ipv4.tcp_abort_on_overflowcomo 1.
PPS. As versões antigas do kernel do Linux têm um erro desagradável de truncar o somaxconvalor para 16 bits mais baixos (ou seja, converter o valor para uint16_t), portanto, aumentar esse valor para mais do que 65535pode até ser perigoso. Para mais informações, consulte: http://patchwork.ozlabs.org/patch/255460/
Se você quiser entrar em mais detalhes sobre todos os internos do backlog no Linux, sinta-se à vontade para ler:
Como o backlog do TCP funciona no Linux .