Número máximo de socket no Linux

11

Parece que o servidor está limitado a ~ 32720 soquetes ... Eu tentei todas as alterações de variáveis conhecidas para aumentar esse limite. Mas o servidor fica limitado em 32720 socket aberto, mesmo que ainda haja 4Go de memória livre e 80% de cpu ocioso ...

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 questão foi perguntada sobre transbordamento de pilha sem sorte até agora)

    
por TheSquad 08.08.2010 / 19:54

4 respostas

8

Eu descobri o que estava limitando tudo:

max_map_count

Obrigado a todos que responderam!

    
por 14.08.2010 / 13:12
2

Você está procurando no lugar errado por essa; você não está correndo em um limite de usuário, você está correndo em um limite de sistema que geralmente é a potência 15 de 2 em um sistema de 32 bits, que é o que eu estou supondo que seu sistema seja. Verifique:

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

Mas você pode mudar isso também; em uma máquina de 32 bits que seria 2 ** 22 como limite máximo absoluto, então:

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

Eu estaria interessado em saber como você vai.

    
por 10.08.2010 / 00:53
1

Se você está realmente tentando olhar para o número máximo de sockets com os quais você pode abrir conexões, você pode tentar olhar para 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 padrões diferentes com base em sua distribuição. Configurá-lo para algo como '1024 65535' é tão aberto quanto você pode obtê-lo; veja se isso ajuda as coisas.

    
por 13.08.2010 / 04:39
0

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

Com um primeiro olhar, vejo que o número de soquetes que você mencionou é da metade do máximo de processos do usuário. Como eu posso imaginar que você tenha um processo separado para cada soquete (provavelmente você executa um servidor ou algo parecido)

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

Apenas uma ideia, não sei se isso ajuda.

    
por 08.08.2010 / 22:11