implant limits
Eleva os limites de file descriptors (nofile) e de processos/threads
(nproc) em duas camadas: sessões de usuário via PAM
(/etc/security/limits.conf) e serviços via drop-ins do systemd.
Os limites padrão da maioria das distribuições (nofile 1024) são pequenos
para servidores com muitas conexões simultâneas — proxies reversos, bancos de
dados, runtimes como Node.js. Quando o limite estoura, o serviço passa a
falhar com Too many open files.
Uso
implant limits [OPTIONS] <SUBCOMANDO>Requer root. As opções do comando (--dry-run) vêm antes do subcomando:
sudo implant limits --dry-run applySubcomandos
| Subcomando | Descrição |
|---|---|
apply |
Adiciona o bloco de limites ao limits.conf e grava os drop-ins do systemd |
revert |
Remove o bloco, os drop-ins e o tuning de capacidade do kernel |
status |
Mostra quais camadas estão aplicadas |
Flags
| Flag | Descrição |
|---|---|
--dry-run |
Simula sem aplicar mudanças |
-o, --output <FORMATO> |
human (padrão), json ou yaml |
-v, --verbose |
Mostra os comandos executados |
-c, --config <ARQUIVO> |
Arquivo de configuração (padrão /etc/protocolo-implant/config.toml) |
-t, --token <TOKEN> |
Token de identificação do servidor (ou PROTOCOLO_TOKEN) |
O que é aplicado
1. `/etc/security/limits.conf` (sessões via PAM)
Se o arquivo ainda não tem o bloco do implant, faz backup
(limits.conf.backup.<timestamp>) e acrescenta ao final um bloco delimitado
por um marcador de início e um de fim:
# Limites configurados pelo Protocolo Implant
# nofile: Máximo de file descriptors (1M - padrão empresarial)
* soft nofile 1048576
* hard nofile 1048576
root soft nofile 1048576
root hard nofile 1048576
# nproc: Máximo de processos/threads por usuário
* soft nproc 65535
* hard nproc 65535
root soft nproc 65535
root hard nproc 65535
# Fim limites ImplantAs linhas root existem porque o curinga * não se aplica ao root no PAM.
Os novos limites valem para novas sessões (novo login SSH, novo su).
2. Drop-ins do systemd (serviços)
Grava o mesmo conteúdo em dois arquivos:
/etc/systemd/system.conf.d/99-implant-limits.conf— serviços do sistema/etc/systemd/user.conf.d/99-implant-limits.conf— serviços de usuário
# Limites systemd configurados pelo Protocolo Implant
[Manager]
DefaultLimitNOFILE=1048576
DefaultLimitNPROC=65535Em seguida roda systemctl daemon-reexec (ou daemon-reload como fallback).
Serviços já em execução mantêm os limites antigos até serem reiniciados.
Unidades que definem LimitNOFILE=/LimitNPROC= próprios continuam usando
os seus valores.
O apply é idempotente: o bloco do limits.conf não é duplicado e os
drop-ins são regravados com o mesmo conteúdo.
Status
| Campo | Significado |
|---|---|
limits_conf_applied |
limits.conf contém o bloco do implant |
systemd_system_applied |
Drop-in de sistema existe |
systemd_user_applied |
Drop-in de usuário existe |
Relação com `check --auto-fix`
O check --auto-fix avalia os limites efetivos (o que o PAM e o systemd
realmente aplicam, considerando também /etc/security/limits.d/) e só grava
quando estão abaixo do mínimo. Além das duas camadas acima, ele aplica um
tuning de capacidade do kernel em /etc/sysctl.d/99-implant.conf
(fs.file-max, fs.nr_open, inotify, filas de rede, conntrack, entre
outros) e os ulimits do Docker (ver docker-limits). O
implant limits apply não grava o 99-implant.conf.
Como reverter
sudo implant limits revertO revert:
- remove do
/etc/security/limits.confsó o bloco do implant: o que está entre# Limites configurados pelo Protocolo Implante# Fim limites Implant, mais a linha em branco que o precede. O resto do arquivo — inclusive linhas adicionadas depois doapply— fica intacto; - apaga
/etc/sysctl.d/99-implant.conf(tuning de capacidade gravado pelocheck --auto-fix), sem recarregar o sysctl — os valores atuais seguem no kernel até o próximo reboot ousysctl --system; - apaga os dois drop-ins do systemd e roda
systemctl daemon-reload.
Blocos gravados até a 2.54.0 não têm o marcador de fim. Nesse caso o
revert remove o marcador de início e apenas as linhas seguintes no formato
que o implant grava (<*|root> <soft|hard> <nofile|nproc> <número>, os
comentários # nofile:/# nproc: e linhas em branco), parando na primeira
linha diferente. Uma linha sua no mesmo formato, colada logo depois do bloco
antigo, seria levada junto — se for o caso, confira o arquivo antes.
Com --dry-run, o revert só anuncia a escrita. implant reset --limits faz
a mesma reversão.
Os limites não fazem parte do emergency-mode; para
desfazê-los, use revert.
Exemplos
# Simular
sudo implant limits --dry-run apply
# Aplicar e conferir
sudo implant limits apply
sudo implant limits status
# Conferir o limite efetivo de um serviço já reiniciado
systemctl show nginx --property=LimitNOFILE
# Reverter
sudo implant limits revertSaída JSON do status (resumida):
{
"success": true,
"command": "limits",
"data": {
"action": "status",
"target": "limits",
"result": "completed",
"dry_run": false,
"state": {
"limits_conf_applied": true,
"systemd_system_applied": true,
"systemd_user_applied": true
}
}
}Veja também
- docker-limits — os mesmos limites para containers
- sysctl — hardening base do kernel
- check — aplica limites e tuning de capacidade no
--auto-fix - reset —
--limits