{"id":178,"date":"2026-04-07T16:01:22","date_gmt":"2026-04-07T19:01:22","guid":{"rendered":"https:\/\/rdconsolo.com.br\/?p=178"},"modified":"2026-04-07T16:09:01","modified_gmt":"2026-04-07T19:09:01","slug":"limitando-o-uso-de-cpu-por-processo-no-ubuntu-server","status":"publish","type":"post","link":"https:\/\/rdconsolo.com.br\/?p=178","title":{"rendered":"Limitando o uso de CPU por processo no Ubuntu Server"},"content":{"rendered":"\n<p>Imagine a seguinte situa\u00e7\u00e3o: seu provedor de VPS est\u00e1 suspendendo temporariamente o servi\u00e7o contratado porque algum processo no seu servidor est\u00e1 usando 100% da CPU por muito tempo.<\/p>\n\n\n\n<p>Como lidar com esse tipo de situa\u00e7\u00e3o?<\/p>\n\n\n\n<p>Usando o cpulimit, vamos tomar como exemplo que queremos limitar qualquer processo com nome &#8216;java&#8217; \u00e0 apenas parte de uma cpu, o comando \u00e9:<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>cpulimit -e java -l 50<\/code><\/pre><\/div>\n\n\n\n<p>Executando esse comando em um terminal, ele ficar\u00e1 aguardando at\u00e9 que um processo chamado &#8216;java&#8217; apare\u00e7a. Em seguida j\u00e1 ir\u00e1 limitar o uso da CPU para esse processo.<\/p>\n\n\n\n<p>Se isso deve permanecer como regra no servidor, mesmo ap\u00f3s rein\u00edcios, o melhor \u00e9 deixar um processo em background monitorando os processos ativos.<\/p>\n\n\n\n<p>Vamos salvar o script abaixo em \/usr\/local\/bin\/monitor_java.sh<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>#!\/bin\/bash\nLIMITE=50\n\necho &quot;Aguardando processo Java...&quot;\n\nwhile true; do\n  PID=$(pgrep -x java | head -1)\n  \n  if [ -n &quot;$PID&quot; ]; then\n    echo &quot;Java encontrado (PID: $PID). Aplicando limite de ${LIMITE}%...&quot;\n    cpulimit -p &quot;$PID&quot; -l &quot;$LIMITE&quot; -z\n    echo &quot;Processo encerrado. Aguardando novo Java...&quot;\n  fi\n  \n  sleep 2\ndone<\/code><\/pre><\/div>\n\n\n\n<p>Agora vamos configurar o systemd para tratar isso como um servi\u00e7o. Salve o arquivo abaixo em \/etc\/systemd\/system\/cpulimit-java.service<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>[Unit]\nDescription=Limita CPU do processo Java\nAfter=network.target\n\n[Service]\nExecStart=\/usr\/local\/bin\/monitor_java.sh\nRestart=always\nRestartSec=5\nUser=root\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre><\/div>\n\n\n\n<p>Para habilitar o servi\u00e7o, use os comandos abaixo.<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>sudo chmod +x \/usr\/local\/bin\/monitor_java.sh\nsudo systemctl daemon-reload\nsudo systemctl enable --now cpulimit-java.service\n\n# Acompanhar logs:\nsudo journalctl -u cpulimit-java.service -f<\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Imagine a seguinte situa\u00e7\u00e3o: seu provedor de VPS est\u00e1 suspendendo temporariamente o servi\u00e7o contratado porque algum processo no seu servidor est\u00e1 usando 100% da CPU por muito tempo. Como lidar com esse tipo de situa\u00e7\u00e3o? Usando o cpulimit, vamos tomar como exemplo que queremos limitar qualquer processo com nome &#8216;java&#8217; \u00e0 apenas parte de uma &hellip; <a href=\"https:\/\/rdconsolo.com.br\/?p=178\" class=\"more-link\">Continue lendo<span class=\"screen-reader-text\"> &#8220;Limitando o uso de CPU por processo no Ubuntu Server&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[18],"class_list":["post-178","post","type-post","status-publish","format-standard","hentry","category-devops","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=178"}],"version-history":[{"count":6,"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/178\/revisions"}],"predecessor-version":[{"id":184,"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=\/wp\/v2\/posts\/178\/revisions\/184"}],"wp:attachment":[{"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rdconsolo.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}