Pesquisa de site

Como aumentar o limite do número de arquivos abertos no Linux


No Linux, você pode alterar a quantidade máxima de arquivos abertos. Você pode modificar este número usando o comando ulimit. Ele concede a você a capacidade de controlar os recursos disponíveis para o shell ou processo iniciado por ele.

Leia também: Definir limites de processos em execução do Linux em nível por usuário

Neste breve tutorial mostraremos como verificar seu limite atual de arquivos abertos e descrições de arquivos, mas para fazer isso, você precisará ter acesso root ao seu sistema.

Primeiro, vamos ver como podemos descobrir o número máximo de descritores de arquivos abertos em seu sistema Linux.

Encontre o limite de arquivos abertos do Linux

O valor é armazenado em:

cat /proc/sys/fs/file-max

818354

O número que você verá mostra o número de arquivos que um usuário pode abrir por sessão de login. O resultado pode ser diferente dependendo do seu sistema.

Por exemplo, em um servidor CentOS meu, o limite foi definido para 818354, enquanto no servidor Ubuntu que executo em casa o limite padrão era definido como 176772.

Se quiser ver os limites rígidos e flexíveis, você pode usar os seguintes comandos:

Verifique o limite rígido no Linux

ulimit -Hn

4096

Verifique os limites flexíveis no Linux

ulimit -Sn

1024

Para ver os valores duros e suaves para diferentes usuários, você pode simplesmente mudar o usuário com “su” para o usuário cujos limites você deseja verificar.

Por exemplo:

su marin
ulimit -Sn

1024
ulimit -Hn

4096

Como verificar os limites dos descritores de arquivos em todo o sistema no Linux

Se você estiver executando um servidor, alguns de seus aplicativos poderão exigir limites mais altos para descritores de arquivos abertos. Um bom exemplo disso são os serviços MySQL/MariaDB ou o servidor web Apache.

Você pode aumentar o limite de arquivos abertos no Linux editando a diretiva do kernel fs.file-max. Para isso, você pode usar o utilitário sysctl.

Sysctl é usado para configurar parâmetros do kernel em tempo de execução.

Por exemplo, para aumentar o limite de arquivos abertos para 500.000, você pode usar o seguinte comando como root:

sysctl -w fs.file-max=500000

Você pode verificar o valor atual dos arquivos abertos com o seguinte comando:

cat /proc/sys/fs/file-max

Com o comando acima, as alterações feitas permanecerão ativas apenas até a próxima reinicialização. Se desejar aplicá-los permanentemente, você terá que editar o seguinte arquivo:

vi /etc/sysctl.conf

Adicione a seguinte linha:

fs.file-max=500000

Claro, você pode alterar o número de acordo com suas necessidades. Para verificar as alterações novamente, use:

cat /proc/sys/fs/file-max

Os usuários precisarão sair e fazer login novamente para que as alterações tenham efeito. Se quiser aplicar o limite imediatamente, você pode usar o seguinte comando:

sysctl -p

Definir limites de arquivo aberto em nível de usuário no Linux

Os exemplos acima mostraram como definir limites globais, mas você pode querer aplicar limites por usuário. Para isso, como usuário root, você precisará editar o seguinte arquivo:

vi /etc/security/limits.conf

Se você é um administrador Linux, sugiro que se familiarize com esse arquivo e com o que pode fazer com ele. Leia todos os comentários nele, pois oferece grande flexibilidade em termos de gerenciamento de recursos do sistema, limitando usuários/grupos em diferentes níveis.

As linhas que você deve adicionar levam os seguintes parâmetros:

<domain>        <type>  <item>  <value>

Aqui está um exemplo de definição de limites flexíveis e rígidos para o usuário marin:

## Example hard limit for max opened files
marin        hard nofile 4096
## Example soft limit for max opened files
marin        soft nofile 1024

Pensamentos finais

Este breve artigo mostrou um exemplo básico de como verificar e configurar limites globais e de usuário para o número máximo de arquivos abertos.

Embora tenhamos apenas arranhado a superfície, recomendo fortemente que você dê uma olhada mais detalhada e leia sobre /etc/sysctl.conf e /etc/security/limits.conf e aprenda como usá-los. Eles serão de grande ajuda para você um dia.