Linux Corrija o erro Muitos arquivos abertos

Linux Corrija o erro Muitos arquivos abertos

Este tutorial explica como resolver o erro Linux "muitos arquivos abertos".

Depois de ler este artigo, você entenderá a causa do erro que está recebendo e saberá como consertá -lo. Você não apenas aprenderá a corrigir o erro, mas também outros aspectos importantes de seus processos de arquivo Linux OS.

O significado do erro "muitos arquivos abertos"

Quando um usuário executa um processo, o processo associa arquivos contendo informações sobre o uso do arquivo. Por exemplo, os descritores de arquivos podem informar o kernel como acessar um arquivo ou como lidar com isso para outro recurso. Por exemplo, quando usamos um tubo para redirecionar um processo para outro.

Por padrão, todo processo executado do Linux tem pelo menos três arquivos associados chamados Descritores de arquivo: Stdin, stdout e stderr. A função deles é mostrada na tabela abaixo.

Descritor de arquivo Número Função
Stdin 0 Refere -se ao método de entrada do teclado
Stdout 1 Imprime ou redireciona a saída, refere -se à tela
Stderr 2 Imprime ou redireciona erros, refere -se à tela

Há um limite de usuários e processos de descritores de arquivos que podem ser executados simultaneamente. Quando o limite é atingido e o usuário ou processo tenta abrir descritores de arquivos adicionais, obtemos o “Erro de arquivos abertos demais”.

Portanto, a solução para esse erro é aumentar o limite de descritores de arquivo que um usuário ou processo pode abrir.

Corrigindo o Linux "muitos arquivos abertos" erro

Para verificar o limite de arquivos do descritor para a sessão atual, execute o comando mostrado abaixo.

ulimit -n

Como você pode ver acima, o limite é 1024.

Agora, vamos verificar o limite do usuário executando o seguinte comando:

ulimit -u

Para aprender o número de arquivos atuais, você pode usar o comando mostrado na captura de tela abaixo.

LSOF | wc -l

O comando mostrado abaixo pode ser usado para aumentar o limite de arquivos do descritor para resolver este erro. No entanto, isso pode não funcionar se o limite especificado nos arquivos de configuração for alcançado.

Como você pode ver, o sistema não nos permite aumentar o limite. Nesse caso, precisamos editar alguns arquivos.

No primeiro arquivo a editar, você verá dois tipos de limites: limites duros e suaves:

O limite rígido representa o limite máximo permitido para o limite suave. Editar o limite rígido requer privilégios.

Por outro lado, o limite suave é usado pelo sistema para limitar todos os recursos do sistema para executar processos. O limite suave não pode ser maior que o limite rígido.

Você pode aprender limites duros e suaves com os comandos mostrados na captura de tela a seguir, onde ulimit -sn mostra o limite suave e ulimit -hn mostra o limite rígido.

Primeiro, abra o seguinte arquivo com privilégios:

sudo nano/etc/segurança/limites.conf

Edite as linhas mostradas abaixo aumentando o limite. No meu caso, aumentei o limite suave de 1024 para 2048. Aqui, você também pode editar o limite rígido, se necessário.

Em seguida, reinicie o daemon-reexec usando o SystemCTL, como mostrado abaixo.

sudo systemctl daemon-reexec

Abra um novo terminal ou reinicie a sessão para verificar as alterações foram feitas com sucesso e tente alterar o Ulimit novamente executando o seguinte comando e altere o limite para o que você especificou no /etc/segurança/limites.conf arquivo.

ulimit -n 2048

Como você pode ver acima, o limite foi atualizado com sucesso.

Caso não funcione para você, abra o seguinte arquivo com privilégios:

sudo nano/etc/systemd/sistema.conf

Encontre a linha DefaultLimitnofile = e mude o primeiro número diante do cólon, aumentando o limite. No meu caso, aumentei de 1024 para 2048. Em seguida, feche e saia do arquivo salvando as alterações.

Além disso, abra o seguinte arquivo com privilégios:

sudo nano/etc/systemd/usuário.conf

Encontre a mesma linha e edite -a, repetindo as alterações feitas anteriormente.

Reinicie o daemon reexec novamente usando SystemCtl.

sudo systemctl daemon-reexec

Reinicie a sessão e use o seguinte comando, substituindo o 2048 pelo limite que você deseja definir e configurar nos arquivos de configuração:

ulimit -n 2048

O comando a seguir retorna o limite para todo o sistema:

gato/proc/sys/fs/arquivo-max

Você altera o limite do sistema usando o seguinte comando:

sudo sysctl -w fs.arquivo-max =

Para tornar a mudança permanente, edite o seguinte arquivo com privilégios:

sudo nano /etc /sysctl.conf

Adicione a seguinte linha substituindo Com o novo limite que você deseja definir:

fs.arquivo-max =

Reinicie para aplicar novas alterações com o comando abaixo.

sudo sysctl -p

Isso é tudo, depois de aumentar o ulimit, o “Muitos arquivos abertos”O erro deve ser corrigido.

Conclusão

Este erro pode ser facilmente corrigido por qualquer usuário do Linux. Linux oferece maneiras diferentes de abordar esse problema, fique à vontade para tentar todos eles para se livrar desse erro. As etapas descritas acima são válidas para muitas distribuições Linux, mas feitas em distos baseados em Debian. Se você estiver interessado em aprender sobre os descritores de arquivos, publicamos conteúdo específico sobre esse assunto que você pode ler neste site. Os descritores de arquivos são um componente básico de todos os sistemas operacionais.

Obrigado por ler este tutorial explicando como resolver o erro "muitos arquivos abertos" no Linux. Continue nos seguindo para mais artigos de Linux profissionais.