Imagine a seguinte situação: seu provedor de VPS está suspendendo temporariamente o serviço contratado porque algum processo no seu servidor está usando 100% da CPU por muito tempo.
Como lidar com esse tipo de situação?
Usando o cpulimit, vamos tomar como exemplo que queremos limitar qualquer processo com nome ‘java’ à apenas parte de uma cpu, o comando é:
cpulimit -e java -l 50Executando esse comando em um terminal, ele ficará aguardando até que um processo chamado ‘java’ apareça. Em seguida já irá limitar o uso da CPU para esse processo.
Se isso deve permanecer como regra no servidor, mesmo após reinícios, o melhor é deixar um processo em background monitorando os processos ativos.
Vamos salvar o script abaixo em /usr/local/bin/monitor_java.sh
#!/bin/bash
LIMITE=50
echo "Aguardando processo Java..."
while true; do
PID=$(pgrep -x java | head -1)
if [ -n "$PID" ]; then
echo "Java encontrado (PID: $PID). Aplicando limite de ${LIMITE}%..."
cpulimit -p "$PID" -l "$LIMITE" -z
echo "Processo encerrado. Aguardando novo Java..."
fi
sleep 2
doneAgora vamos configurar o systemd para tratar isso como um serviço. Salve o arquivo abaixo em /etc/systemd/system/cpulimit-java.service
[Unit]
Description=Limita CPU do processo Java
After=network.target
[Service]
ExecStart=/usr/local/bin/monitor_java.sh
Restart=always
RestartSec=5
User=root
[Install]
WantedBy=multi-user.targetPara habilitar o serviço, use os comandos abaixo.
sudo chmod +x /usr/local/bin/monitor_java.sh
sudo systemctl daemon-reload
sudo systemctl enable --now cpulimit-java.service
# Acompanhar logs:
sudo journalctl -u cpulimit-java.service -f