Como posso aumentar o limite de arquivos abertos para todos os processos?

32

Posso usar o ulimit, mas acho que isso afeta apenas minha sessão do shell. Quero que o limite seja aumentado para todos os processos. Isso está na Red Hat.

contra-modo
fonte
Qual versão do Red Hat, a propósito? RHEL5?
mattdm

Respostas:

26

A resposta de Justin informa como aumentar o número total de arquivos abertos disponíveis para todo o sistema. Mas acho que você está perguntando como aumentar o limite por usuário globalmente. A resposta para isso é adicionar as seguintes linhas a /etc/security/limits.conf:

*               soft    nofile            2048
*               hard    nofile            2048

(Onde o * significa todos os usuários.)

Há alguma documentação de resumo nesse arquivo em si e em man limits.conf. Isso é implementado através do pam_limits.somódulo chamado para vários serviços configurados no /etc/pam.d/.

E, devo admitir, não tenho ideia de onde esse padrão 1024 vem. E acredite em mim, eu olhei. Eu até tentei sem o módulo pam_limits configurado, e ele ainda está lá. Deve estar codificado em algum lugar, mas não sei exatamente onde.

mattdm
fonte
2
Hmm ... eu configurei isso corretamente. Saia do SSH e volte e meu limite flexível ainda está definido como 1024. Há algo que esteja faltando para tornar esse "ativo"? Obrigado.
Joshua Pinter
@mattdm - Vale ressaltar que em algumas distribuições Linux o arquivo mencionado estará em: /etc/limits.conf
Guy Avraham
13

De acordo com o artigo Linux Aumente o número máximo de arquivos abertos / descritores de arquivo (FD) , você pode aumentar o limite de arquivos abertos adicionando uma entrada a /etc/sysctl.conf.

Anexe uma diretiva de configuração da seguinte maneira:

fs.file-max = 100000

Em seguida, salve e feche o arquivo. Os usuários precisam fazer logoff e logon novamente para que as alterações entrem em vigor ou elas podem apenas digitar o seguinte comando:

# sysctl -p

Você também pode verificar suas configurações com o comando:

# cat /proc/sys/fs/file-max
Justin Ethier
fonte
Sou cético em relação à necessidade de sair e entrar novamente nessa configuração em particular, que abrange todo o sistema. (Isso vale para praticamente tudo em sysctl ...)
mattdm
13

Aumentar o número máximo de arquivos abertos ulimit no Linux

1.Step: abra o sysctl.conf e adicione esta linha fs.file-max = 65536

$ vi /etc/sysctl.conf

adicione nova linha e

fs.file-max = 65536

salvar e sair.

2. passo:

$ vi /etc/security/limits.conf

e adicione abaixo o mencionado

* soft     nproc          65535
* hard     nproc          65535
* soft     nofile         65535
* hard     nofile         65535

salvar e sair verificar arquivo aberto máximo ulimit

# ulimit -a

....
open files                      (-n) 65535
minhas23
fonte
6

Mas se você estiver tentando aumentar o número máximo de arquivos abertos de um serviço como o MariaDB ou qualquer outra coisa (usando o systemd ), precisará fazer isso diretamente no arquivo .service

/lib/systemd/system/<servicename>.service

Será algo como isto:

[Unit]
Description=Some Daemon
After=syslog.target network.target

[Service]
Type=notify
LimitNOFILE=49152
ExecStart=/usr/sbin/somedaemon

[Install]
WantedBy=multi-user.target

A resposta completa está aqui: Aumentando o nproc para processos lançados pelo systemd no CentOS 7

Matheus Baldasso
fonte
Isso precisa ser votado, pois a onipresença de systemdsuas mudanças em andamento está aumentando em todo o ecossistema Linux. No entanto, sugiro editar a resposta cp -r /lib/systemd/system/mariadb.service /etc/systemd/system/e fazer as alterações nesse arquivo, em vez do arquivo de serviço em todo o sistema fornecido pelo pacote.
ILMostro_7 18/02/19
3

SUPLEMENTO:

Você pode encontrar a configuração em outro local: /etc/security/limits.d/*.conf

Eu tive que modificá-lo. Não funcionou sem ele. O formato é o mesmo que paralimits.conf

Waldemar Wosiński
fonte
Também tive que atualizar este arquivo para que a configuração funcionasse totalmente em nossos servidores CentOS.
John Eisbrener