essa pergunta já foi feita muitas vezes, mas muitos tópicos têm anos e não conseguimos descobrir quais deles funcionam.
Temos um serviço que é iniciado via systemd que roda como um usuário separado, vamos chamá-lo de "myservice". O serviço tem sua estrutura de pasta em /opt/company/product/{bin,log,etc}. O processo é configurado para usar muitos threads porque ele transfere arquivos de um servidor para outro. Às vezes, recebemos um erro por muitos arquivos abertos.
Tentamos definir o ulimit, sysctl -w fs.file-max=1000000, configurando-o em arquivos e nada parece funcionar.
Qual é a maneira atual do Ubuntu 24.04 alterar permanentemente o limite de um processo ou usuário específico para um número muito alto ou, melhor, desabilitar o limite completamente?
Obrigado
O número máximo de arquivos abertos para seu serviço pode ser alterado com a opção systemd config
LimitNOFILE=
. Você pode editar seu arquivo de serviço para ficar assim:O limite era 1024:524288 antes e é 1073741816:1073741816 depois. Isso é basicamente para "desabilitar o limite completamente". Estou configurando soft:hard, pois
ulimit
não funcionou para você.Os limites são herdados pelos filhos de um processo.
ulimit
in.bashrc
funciona para um humano, não para um usuário de serviço. Há uma opção em/etc/systemd/system.conf
mas globais são uma má ideia./opt
pode indicar um serviço de terceiros. Verifiquegrep '^Max open files' /proc/$(pidof service_process_name)/limits
se mostra os valores corretos e se o serviço não os altera.