proc's limit e ulimit -f não combinam

6

Eu tenho um problema em que um processo tem um tamanho máximo de arquivo diferente do ulimit para um usuário. O arquivo de log para este processo basicamente não está crescendo além de 524288

proc:

less /proc/20238/limits

Limit                     Soft Limit           Hard Limit           Units
...
Max file size             524288               524288               bytes
...

ulimit:

ulimit -a

...
file size               (blocks, -f) unlimited
...

Pelo que posso dizer, não há nenhum ulimit sendo definido no script que inicia o processo.

Também olhei para /etc/security/limit.conf , mas isso só tem entradas para nofile e nproc

P: Você tem ideia do que mais poderia estar definindo o limite de tamanho de arquivo?

Se houver alguma ajuda, aqui está uma versão limpa do que inicia o processo:

nohup java $WALLET_OPTS -DOracleName="FileSender" -DAPP=FILE_SDR -Dapp_props=$APP_PROPS -Dfile_name=${FILE_NAME}  -XX:+UseParallelGC -XX:+DisableExplicitGC -XX:-EliminateLocks $APPMEM -DDEBUG_MQSERVER=TRUE -classpath $CLASSPATH com.some.path.FileSdrSrv 10 1>> $APP_LOG/filesdr.log 2>&1 &

O arquivo java não define o ulimit

    
por Dakota Brown 06.07.2016 / 14:47

2 respostas

0

O aplicativo pode limitar os recursos ao inicializar, sempre é possível configurar limites de recursos mais rigorosos do que o valor configurado do usuário. Veja o seguinte exemplo:

[centos@be0 ~]$ ulimit -n
32000
[centos@be0 ~]$ ulimit -n 16000
[centos@be0 ~]$ ulimit -n
16000
[centos@be0 ~]$ ulimit -n 32000
-bash: ulimit: open files: cannot modify limit: Operation not permitted
[centos@be0 ~]$
    
por 18.01.2017 / 19:06
0

Ulimits são herdados do processo pai, se f.e. você loga como root e su para o usuário. Você terá limites diferentes, do que quando se registra diretamente no usuário.

O mesmo problema é com os scripts de início, se é sysvinit. É um pouco diferente com o systemd, mas não muito.

A configuração do PAM decide em quais casos os limites são carregados. Você pode verificar isso no homem.

Você deve verificar se há arquivos em /etc/security/limits.d/*.conf , pois eles podem substituir os padrões.

IIRC os padrões são definidos em limits.h, mas não me lembro de sua localização em rhel5.

    
por 01.03.2018 / 22:59