Quais são os possíveis problemas com a definição global de ulimit para ilimitado?

2

Recentemente, minha equipe teve um problema com o ulimit sendo definido como muito baixo em nossos servidores Apache. Nós conversamos sobre o aumento do limite para um número arbitrário, mas não conseguimos pensar em qualquer razão para não apenas defini-lo globalmente como ilimitado.

Existem algumas boas razões para não fazer isso?

Percebemos que poderia usar mais recursos, mas é mais fácil lidar com o uso de recursos do que com uma falha no aplicativo ou com um problema "fora do fd".

    
por Joe Hillenbrand 01.02.2012 / 20:43

1 resposta

4

ulimit é uma interface para definir todos os tipos de limites em um sistema Linux, não apenas limites de descritores de arquivos abertos:

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

A razão pela qual você realmente estabeleceria limites em recursos é porque os recursos são finitos. Definir limites basicamente protege seu sistema de não responder ao custo de limitar usuários específicos. Mesmo que você tenha apenas um único aplicativo para se preocupar, ainda é necessário garantir que ele não pare o sistema, por isso você não conseguirá fazer login por meio do SSH para solucionar mais problemas.

No caso específico de descritores de arquivos abertos, a sobrecarga de operações assíncronas usando select () ou poll () chama aumenta significativamente se a tabela do descritor de arquivos é muito grande (o que não acontece sob condições usuais, mas pode acontecer facilmente se um dos seus processos for vazando alças ). Isso prejudicará o desempenho geral da E / S assíncrona em todo o sistema.

    
por 01.02.2012 / 21:06