O que você sabe sobre os ulimits em sistemas Linux?
sobes.tech IA
Resposta da IA
ulimits (limites de utilizador) no Linux é um mecanismo do núcleo que permite estabelecer restrições no consumo de recursos do sistema para utilizadores, grupos ou processos. Ajudam a evitar o esgotamento de recursos por um processo, o que pode levar à instabilidade ou falha do sistema.
Categorias principais de restrições:
- Número de processos: Número máximo de processos filhos que um utilizador ou processo pode criar.
- Tamanho de ficheiros: Tamanho máximo de um ficheiro que um utilizador ou processo pode criar.
- Número de ficheiros abertos: Número máximo de descritores de ficheiros que um processo pode abrir.
- Tamanho da pilha: Tamanho máximo da pilha para processos.
- Utilização de memória: Restrições na memória virtual (tamanho do residente, tamanho do segmento de dados, etc.).
- Prioridade de planeamento: Prioridade máxima com que um processo pode trabalhar.
- Bloqueios de ficheiros: Número de bloqueios de ficheiros.
A gestão de ulimits é feita através de:
-
O comando
ulimit(integrado no shell): Permite ver e definir limites para o shell atual e os seus processos filhos.# Ver todos os limites atuais (soft e hard) ulimit -a # Ver o limite no número de ficheiros abertos (soft) ulimit -n # Definir limite soft no número de ficheiros abertos para 4096 ulimit -n 4096 # Definir limite hard no número de ficheiros abertos para 8192 (apenas para root ou se o limite soft for inferior) ulimit -Hn 8192 -
Ficheiro
/etc/security/limits.conf: Permite estabelecer limites permanentes para utilizadores específicos, grupos ou todos os utilizadores (*) ao nível do sistema. As alterações entram em vigor após o próximo login do utilizador.# Sintaxe: <domínio> <tipo> <item> <valor> # domínio: utilizador (@grupo, *) # tipo: soft | hard # item: core, nproc, nofile, virtualmem, etc. # valor: valor do limite # Limite para o utilizador 'devops' no número de ficheiros abertos (soft=4096, hard=8192) devops soft nofile 4096 devops hard nofile 8192 # Limite para o grupo 'developers' no número de processos (hard=1000) @developers hard nproc 1000 # Limite no tamanho do ficheiro para todos os utilizadores (hard=ilimitado) * hard fsize unlimited -
Chamadas ao sistema (por exemplo,
setrlimit,getrlimit): Os programas podem estabelecer ou obter os seus próprios limites durante a execução. Os processos sem privilégios só podem reduzir os seus limites rígidos ou modificar os limites suaves até ao valor do limite rígido. O root pode estabelecer quaisquer limites.
Compreender ulimits é fundamental para depurar problemas de recursos (por exemplo, "muitos ficheiros abertos"), prevenir ataques DoS ao nível de recursos e ajustar o desempenho das aplicações. É especialmente importante ao iniciar serviços, contêineres ou bases de dados.