Introduction: Challenges like number of open files in any of the production environment has become common now a day. Uma vez que muitas aplicações que são baseadas em Java e Apache, estão sendo instaladas e configuradas, o que pode levar a muitos arquivos abertos, descritores de arquivos etc. Se isso exceder o limite padrão que é definido, então um pode enfrentar problemas de controle de acesso e desafios de abertura de arquivos. Muitos ambientes de produção chegam a situações de paralisação por causa disso.
Felizmente, temos “ulimit” comando do Linux baseada em servidor, através do qual pode-se ver/definir/obter o número de arquivos abertos status/detalhes de configuração. Este comando está equipado com muitas opções e com esta combinação pode-se definir o número de arquivos abertos. A seguir estão os comandos passo a passo com exemplos explicados em detalhe.
Para ver o que é o presente, abrir limite de arquivo em qualquer Sistema Linux
Para obter abrir limite de arquivo em qualquer servidor Linux, execute o seguinte comando,
# cat /proc/sys/fs/file-max146013
O número acima mostra que o usuário pode abrir ‘146013’ ficheiro por cada sessão de logon do usuário.
# cat /proc/sys/fs/file-max149219# cat /proc/sys/fs/file-max73906
isto indica claramente que os sistemas operacionais Linux individuais têm um número diferente de ficheiros abertos. Isto é baseado em dependências e aplicações que estão rodando em respectivos sistemas.comando
ulimit :
como o nome sugere, ulimit (limite de usuário) é usado para exibir e definir o limite de recursos para o usuário logado.Quando executarmos o comando ulimit com uma opção, então ele irá imprimir o limite de todos os recursos para o usuário logado. Agora vamos executar “ulimit -um” no Ubuntu / Debian e CentOS de sistemas,
Ubuntu / Debian
shashi@Ubuntu ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5731max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024 pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5731virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited
CentOS Sistema
shashi@centos ~}$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 5901max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 5901virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited
Como podemos ver aqui OS diferentes têm diferentes limites definidos. Todos estes limites podem ser configurados / alterados usando o comando “ulimit”.
Para exibir o indivíduo limite de recursos, em seguida, passar o parâmetro individual no comando ulimit, alguns dos parâmetros são listados abaixo:
- ulimit -n –> Ele irá exibir o número de arquivos abertos limite
- ulimit -c –> mostra o tamanho do arquivo core
- umilit -u –> Ele vai apresentar o máximo do usuário processo de limite para o utilizador com sessão iniciada.
- ulimit-f – > ele irá mostrar o tamanho máximo de arquivo que o usuário pode ter.
- umilit-m – > irá mostrar o tamanho máximo de memória para o utilizador registado.
- ulimit -v –> Ele irá exibir a quantidade de memória máxima limite de tamanho
Use abaixo os comandos de seleção rígido e macio limites para o número de abrir o arquivo para o usuário conectado
shashi@Ubuntu ~}$ ulimit -Hn1048576shashi@Ubuntu ~}$ ulimit -Sn1024
Como resolver o problema quando o limite no número Máximo de Arquivos foi alcançado ?
vamos assumir que o nosso servidor Linux atingiu o limite do número máximo de arquivos abertos e queremos estender esse limite de todo o sistema, por exemplo, queremos definir 100000 como limite de número de arquivos abertos.
Use o comando sysctl para passar fs.file-max parâmetro para o kernel na mosca, executar sob comando como usuário root,
root@ubuntu~]# sysctl -w fs.file-max=100000fs.file-max = 100000
alterações Acima estará ativa até a próxima reinicialização, de modo a tornar essas alterações persistentes através de reiniciar o computador, edite o arquivo /etc/sysctl.conf e adicionar o mesmo parâmetro,
root@ubuntu~]# vi /etc/sysctl.conffs.file-max = 100000
gravar e sair do ficheiro,
execute o comando abaixo para fazer as alterações acima entrarem em vigor imediatamente sem iniciar e reiniciar.
root@ubuntu~]# sysctl -p
Agora verifique se novas alterações estão em efeito ou não.
root@ubuntu~]# cat /proc/sys/fs/file-max100000
Use o comando abaixo para descobrir como muitos descritores de arquivo estão sendo utilizados:
# more /proc/sys/fs/file-nr1216 0 100000
Nota: o Comando “sysctl-p” é usado para confirmar a alterações sem reiniciar o computador e sair.
Defina o limite de recursos ao nível do Utilizador via limite.conf file
” / etc / sysctl.o ficheiro conf ” é usado para definir o limite de recursos a nível do sistema, mas se quiser definir o limite de recursos para um utilizador específico como o Oracle, o MariaDB e o Apache, então isto poderá ser alcançado através de “/etc/security/limits”.ficheiro conf”.
limite da amostra.conf é mostrado abaixo,
root@ubuntu~]# cat /proc/sys/fs/file-max
Vamos supor que queremos definir duro e macio limite no número de arquivos abertos para linuxtechi usuário e para o usuário oracle conjunto rígido e macio limite no número de abrir o processo, edite o arquivo “/etc/security/limites.conf”e adicionar as seguintes linhas
# hard limit for max opened files for linuxtechi userlinuxtechi hard nofile 4096# soft limit for max opened files for linuxtechi userlinuxtechi soft nofile 1024# hard limit for max number of process for oracle useroracle hard nproc 8096# soft limit for max number of process for oracle useroracle soft nproc 4096
Save & sair do ficheiro.Nota: No caso de você querer colocar limite de recursos em um grupo em vez de usuários, então ele também pode ser possível através de limite.conf arquivo, no lugar do nome de usuário , digite @<Group_Name> e o resto dos itens vai ser a mesma, exemplo é mostrado abaixo,
# hard limit for max opened files for sysadmin group@sysadmin hard nofile 4096 # soft limit for max opened files for sysadmin group@sysadmin soft nofile 1024
Verifique se novas alterações estão em vigor ou não,
~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096
Nota: Outros majoritariamente comando usado é “lsof”, que é usado para descobrir “quantos arquivos são abertos no momento”. Este comando é muito útil para administradores.conclusão:
Como mencionado na secção Introdução o comando “ulimit” é muito poderoso e ajuda a configurar e certificar-se de que as instalações de aplicação são mais suaves sem quaisquer estrangulamentos. Este comando ajuda a corrigir muitas das limitações de arquivos em servidores baseados em Linux.