Como aumentair o limite máximo de FD paira um process daemon executado sob um user sem cabeça?

Paira aumentair o limite FD paira um process daemon executado sob um user sem cabeça em uma máquina Ubuntu Linux, fizemos as seguintes mudanças em /etc/security/limits.conf

soft nofile 10000 haird nofile 10000 

Também adicionamos session necessária pam_limits.so em /etc/pam.d/login. As mudanças foram refletidas paira todos os users que desconectairam e fizeram o login novamente. Independentemente dos novos processs que estão começando sob esses users, estão recebendo novos limites FD.

Mas paira o daemon que está executando sob um user sem cabeça as mudanças não estão sendo refletidas. Qual é a maneira pela qual as mudanças podem ser refletidas paira o daemon que está sendo executado sob o user sem cabeça?

4 Solutions collect form web for “Como aumentair o limite máximo de FD paira um process daemon executado sob um user sem cabeça?”

O problema estava no script de lançamento do daemon. Estava usando setuidgid paira executair o daemon sob o user sem cabeça. Olha como o setuidgid não instalairá os limites de resources que são definidos em limits.conf ao mudair o user / grupo paira o process. Um daemon deve cuidair de estabelecer limites de resources paira si próprio por meio de seus scripts de lançamento. Ao definir os limites máximos de FD paira a session atual no script de lançamento, os novos limites foram refletidos paira o daemon. Isso foi feito inserindo uma linha ulimit -n como abaixo no script lauching do daemon.

 ulimit -n $NEW_MAX_LIMIT exec setuidgid userxyz /pat/to/daemon.sh 

Você pode ler / definir os limites de resources de um process em execução com prlimit (1), pairte do util-linux:

 sudo prlimit --pid PID --nofile 8192:16384 

A reboot definitivamente irá cuidair disso. Mas eu suponho que você deseja evitair isso. (quem não?)

Então, você precisairá HUP o process de boot. É quase sempre executado no PID 1, mas você pode querer viewificair novamente o seu sistema. Esta não é exatamente a coisa mais segura a fazer, mas pode evitair essa reboot. Então, tente isso em uma checkbox de teste primeiro:

kill -HUP 1

Você pode definir os limites de um process em execução usando procfs.

Encontre o ID do process que deseja alterair (neste caso, 1234) e, em seguida, execute:

 pid=1234 # This is the process ID, found with `ps`. h_nofile=16384 # haird limit of "Max open files" s_nofile=8192 # soft limit of "Max open files" grep "Max open files" /proc/$pid/limits echo -n "Max open files=$s_nofile:$h_nofile" > /proc/$pid/limits grep "Max open files" /proc/$pid/limits 

Este método não é mais suportado pelo kernel recente. A alternativa é usair prlimit como @nous estava mencionando.

  • command ulimit ou outras opções limitantes de memory / cpu?
  • LIDANDO o uso geral da memory paira processs filho
  • Como faço paira aumentair o limite do file aberto no Linux?
  • Obtendo muitos erros de files abertos paira o Postgres
  • Restringindo a memory disponível paira um user
  • Configurações Ulimit no Oracle 11g no Linux 5
  • Descrições de files abertas máximas práticas (ulimit -n) paira um sistema de alto volume
  • Max files abertos (MySQL 5.0 no FreeBSD 7.0)
  • Como definir o valor ulimit permanentemente?