Estou usando o Solaris 11 e entendo que um usuário não privilegiado pode aumentar ou diminuir o limite flexível do máximo de descritores de arquivos abertos enquanto permanece dentro do limite máximo. Também é possível que um usuário sem privilégios diminua o limite rígido, mas não pode aumentar o limite rígido depois que ele for reduzido.
Estou com o seguinte cenário.
Eu tenho um usuário não privilegiado cujos limites de hardware e hardware são definidos como seguindo usando o comando ulimit
.
Limite suave: 10000
Limite rígido: 10000
-bash-4.4$ ulimit -n
10000
-bash-4.4$ ulimit -Hn
10000
-bash-4.4$ ulimit -Sn
10000
Isso significa que o usuário não deve poder iniciar nenhum processo com um limite máximo de descritores de arquivos abertos maiores que 10000. Mas não consigo explicar alguns processos que estão sendo executados como o mesmo usuário com um limite de descritores de arquivos abertos mais alto . Eu tenho vários desses processos em execução.
-bash-4.4$ plimit 12553
12553:
resource current maximum
time(seconds) unlimited unlimited
file(blocks) unlimited unlimited
data(kbytes) unlimited unlimited
stack(kbytes) 8192 unlimited
coredump(blocks) unlimited unlimited
nofiles(descriptors) 65536 65536
vmemory(kbytes) unlimited unlimited
É um processo java e está sendo executado em uma Zona do Solaris . O processo pai é zsched
. Todas as informações fornecidas são de dentro da zona. O comando do processo é mostrado abaixo também.
java -d64 -DAppName=java_app -server -Xms2048m -Xmx6144m -Xmn2040m -
Eu não tenho muita informação sobre o processo em si e como ele foi lançado. Existe algum cenário específico que estou perdendo, que pode permitir que esse usuário não privilegiado use um limite de descritores de arquivos abertos mais alto?
Minhas suposições:
Esta informação pode ajudar. Na máquina em questão, o limite está sendo definido no arquivo /etc/profile
usando o seguinte comando:
ulimit -n 10000
Isso significa que o arquivo é chamado toda vez que o usuário efetua login e o limite é aplicado. É minha suposição de que pode ser possível que tais processos não estejam sendo iniciados usando o login interativo normal ou mesmo um shell de não-login. O /etc/profile
é chamado em um login interativo e em um shell interativo de não-login (conforme minha observação); portanto, um processo iniciado a partir desse shell não deve ter um limite de descritores de arquivo maior.
Pode ser devido a um shell não interativo, como scripts ou cron, que não precisa chamar /etc/profile
e, assim, usar outro limite padrão. Mas olhando para esses processos, esse cenário parece improvável. Existem outras possibilidades?
Embora tenhamos suporte para o Solaris, a comunidade não é muito útil; por isso estamos contando com esses fóruns para qualquer ajuda.