OOM usando CRON mas não usando SHELL

1

Quando inicio um programa java por shell, tudo está funcionando bem. No entanto, se eu iniciar o mesmo programa com o mesmo comando e mesmo usuário pelo CRON, recebo um java.lang.OutOfMemoryError logo após alguns segundos.

Além disso, o CRON não pode fazer nada desde que eu não mate o programa java bloqueado. Não importa qual cronjob deva ser iniciado, ele sempre termina com o erro "(CRON) (cannot fork)" no syslog. Depois de matar o programa java, todos os novos cronjobs estão funcionando bem novamente.

O programa java cria muitos threads (1500 na inicialização, mais depois) e - quando iniciado pelo crontab - sempre começa a travar logo após 475 threads terem sido criados. Então, talvez seja mais algo como "OutOfThreads", mesmo que OutOfMemory seja registrada.

Para fins de teste, reduzi o número de threads iniciais para 450 e, com essa configuração, tudo funciona bem por alguns minutos (até que mais threads sejam criados). No entanto, eu realmente preciso desses 1500 + tópicos e não tenho idéia porque isso não é possível quando o programa java foi iniciado pelo crontab. Como mencionado, tudo funciona perfeitamente, desde que eu inicie o programa por shell e não por crontab.

O problema só ocorre com o Ubuntu 16.04, todas as versões antigas funcionavam muito bem. Isso é um bug ou um novo recurso de segurança? Não encontrei nenhuma informação sobre esse problema, então espero que alguém possa ajudar.

    
por DOB 18.05.2016 / 17:44

0 respostas