Número máximo de soquetes no Linux

12

Parece que o servidor está limitado a ~ 32720 soquetes ... Tentei todas as alterações de variáveis ​​conhecidas para aumentar esse limite. Mas o servidor fica limitado no soquete 32720 aberto, mesmo se ainda houver 4Go de memória livre e 80% da CPU ociosa ...

Aqui está a configuração

~# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63931
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 798621
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 2048
cpu time               (seconds, -t) unlimited
max user processes              (-u) 63931
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

net.netfilter.nf_conntrack_max = 999999
net.ipv4.netfilter.ip_conntrack_max = 999999
net.nf_conntrack_max = 999999

Alguma ideia ? (Esta pergunta foi feita no estouro de pilha sem sorte até agora)

O Esquadrão
fonte
serverfault.com/questions/10852/… possui alguns dados bons
sysadmin1138
Assim como stackoverflow.com/questions/410616/…
sysadmin1138
ENTENDI check esses tópicos antes de postar, sem sorte
TheSquad

Respostas:

8

Eu descobri o que estava limitando tudo:

max_map_count

Obrigado a todos que responderam!

O Esquadrão
fonte
Então, as tomadas eram um arenque vermelho. Bom saber.
pjz
Como você muda isso? Você tem um documento que descreve o que faz?
Ryan Shillington
2

Você está procurando no lugar errado para este; você não está executando um limite de usuário, está executando um limite do sistema que geralmente é a 15ª potência de 2 em um sistema de 32 bits, que é o que eu acho que é o seu sistema. Verifica:

 % cat /proc/sys/kernel/pid_max 
 32768
 %

Mas você pode mudar isso também; em uma máquina de 32 bits com 2 ** 22 como limite superior absoluto, portanto:

% sudo bash -c 'echo 4194303 > /proc/sys/kernel/pid_max'
%

Eu estaria interessado em saber como você vai.

Xerxes
fonte
pid_max já está em 999999
TheSquad 14/08
1

Se você está realmente tentando ver o número máximo de soquetes com os quais pode abrir conexões, pode tentar olhar em cat / proc / sys / net / ipv4 / ip_local_port_range; esse é o intervalo de portas que o kernel usará para soquetes de saída e possui diferentes padrões com base na sua distribuição. Configurá-lo para algo como '1024 65535' é o mais aberto possível; veja se isso ajuda as coisas.

pjz
fonte
ip_local_port_range já está em 1024 65535.
TheSquad
0

Sinto muito se algo semelhante está sendo dito nos tópicos, mas não tenho tempo para lê-los agora: <

Com uma primeira olhada, vejo que o número de soquetes que você mencionou é aproximadamente a metade do número máximo de processos do usuário. Como posso adivinhar o seu tem um processo separado para cada soquete (provavelmente você executa um servidor ou algo parecido)

O que você pode fazer é verificar o número de processos na próxima vez que atingir o limite do soquete.

Apenas uma ideia, não sei se ajuda.

Nikolaidis Fotis
fonte
não, não é isso: # ps -ef | grep -c 'root' = 147
TheSquad
isso é sob ambiente controlado? você poderia fazer alguns cheques? por exemplo, quantos processos são criados com cada solicitação? Além disso, qual é a prioridade do servidor? Se você renegá-lo, isso muda alguma coisa? Caso contrário, tenho quase certeza de que você atingirá o limite do processo ou o limite de threads dentro de um processo:>
Nikolaidis Fotis