Jump to content

Como Limitar O Volume De Processos E Tempo De Execução No Limits.conf


markvsilva
 Share

Recommended Posts

Chama-se “fork bomb” quando algum processo violento praticamente estrangula o servidor.

 

Para quem utiliza Cloud Linux em seu dedicado ou semi-dedicado tem uma preocupação a menos com o fork bomb uma vez que o LVE disponível no WHM permite você limitar o volume de processos para seus usuários sem qualquer dificuldade por parte do administrador.

 

Para quem não usa CloudLinux, usa Cento OS, Red Hat ou Fedora ou até mesmo para quem usa o CloudLinux mas deseja fazer ajustes mais finos na limitações de processos de seus usuários basta editar o arquivo  /etc/security/limits.conf, saiba mais em http://linux.die.net/man/5/limits.conf que é a fonte deste artigo

 

Este recurso junto com o módulo MPM do apache ajudam o seu servidor contra overloading provocado pelo mal uso dos recursos de processamento dos clientes que você hospeda.

 

Então vamos lá entender como funciona o arquivo limits.conf. Abra ele no seu editor de texto favorito.

 

# nano /etc/security/limits.conf

OBS: Se deseja instalar o nano, basta executar # yum install nano

 

Ao abrir o arquivo você terá todas as instruções de uso dentro do próprio arquivo, porém, tudo em inglês, mas o uso é bem simples, a sintaxe deste arquivo é;

 

<domain> <type> <item> <value>

 

Onde;

domain à Usuário que deseja restringir.
type à Tipo de restrição que deseja colocar, pode ser “soft” ou “hard”, respectivamente, uma restrição mais leve e outra mais severa.
item à O que você desja restrigir, são várias as opções de restrições, conforme consta no arquivo temos as seguintes opções;

  • core - limita o tamanho do arquivo core (KB)
  • data - tamanho máximo de dados (KB)
  • fsize - Tamanho máximo de arquivo (KB)
  • memlock - Espaço máximo de endereços bloqueados na memória (KB)
  • nofile - Número máximo de arquivos abertos
  • rss - Tamanho máximo dos programas residentes (KB)
  • stack - Tamanho máximo de pilha (KB)
  • cpu - Tempo máximo usado na CPU (MIN)
  • nproc - Número máximo de processos
  • as - Limite de espaço de endereços
  • maxlogins - Número máximo de logins deste usuário
  • priority - Prioridade que os programas deste usuário serão executados

value é o valor limite para o item que você escolheu.

 

Basicamente de todos os itens, este tutorial em especial vamos usar o nproc e o cpu. Seguindo as sintaxe, podemos então limitar o volume de processos para o usuário fulano para 10, com o limite máximo de processamento para 1 minuto, ficaria assim;

 

fulano hard nproc 10
@fulano hard nproc 10
fulano hard cpu 1
@fulano hard cpu 1

 

O item nporc, se referente ao número de processos, e cpu se refere ao número em minutos do tempo máximo que um processo pode ocupar no processador, como o item cpu é dado em minutos o valor mínimo que podemos usar é o 1, e o tipo de restrição foi colocado com hard, ou seja, dificilmente este usuário conseguirá passar dos 10 processos que você estipilou, caso venha a utilizar soft, este usuário poderá passar dos limites uma vez que não há um monitoramento constante quando se usa a restrição soft.

 

Você também restringir todos os usuários de uma só vez, basta usar o wildcard *

 

* soft nproc 10
@* soft nproc 10
* hard cpu 1
@* hard cpu 1

 

Se for restringir todos os usuários é altamente recomendado que use a restrição soft, pois assim você evita contra-tempos desnecessários com clientes que não fazem abusos. No entando não recomendo que restrinja todos os usuários, restrinja apenas os usuários que realmente colocam em risco seu servidor.

 

 

Eventuais problemas;

 

O arquivo limits.conf é executado em nível de sistema, se você colocar muito conteúdo neste arquivo você terá um aumento de processos do próprio sistema, isso implica em uma maior atividade de processos vindo da SYS e do WAIT I/O, para quem já teve problemas com SYS e WAIT I/O sabe muito bem a dor de cabeça que é, você terá overloading fantasmas em seu servidor que você não sabe de onde vem.

 

 

 

Prefork MPM do apache

 

O limits.conf é executado em nível de sistema, e podemos usar um módulo do apache para previni também excessos de abusos de processamento gerados pelas requisições que seus sites recebem.

 

O Easy Apache do WHM trás na lista de exaustiva de opções o módulo Prefork Multi-Processing Module (MPM). Este módulo também auxilia na redução do volume de processos via http.

 

Para servidores que não possuem problemas constantes de overloading você pode utilizar as configurações padrões do Prefork, caso não seja este o seu caso você pode encontrar na internet vários tutoriais de como tunnar o seu apache fazendo configurações e ajustes finos neste módulo.

 

Este módulo pode ser configurado diretamente no arquivo de configuração do próprio apache, localizado em /etc/httpd/conf/httpd.conf

 

Localize a linha <IfModule prefork.c>, se você não encontrar esta linha e tiver certeza que o prefork realmente foi compilado junto com seu apache você poderá adicionar a chamada do módulo, acrescente no final do arquivo se ele não existir;

 

<IfModule prefork.c>
StartServers       2
ServerLimit       256
MaxClients        75
MaxRequestsPerChild  1000
</IfModule>

 

A directiva StartServers define o número de processos filhos criados na inicialização do servidor. Geralmente há poucas  razões para ajustar este parâmetro.

 

ServerLimit padrão do apache é 256, basicamente é a quantidade de processos requisitados via http. Você pode aumentar ou diminuir este valor de acordo com os recursos que você tem disponivel, nos servidores da InHosting temos o padrão de utilizar 1200, isso é relativo, depende muito do que está hospedado no servidor.

 

A directiva MaxClients define o limite para o número de solicitações simultâneas que serão atendidas pelo apache, o padrão também é 256.

 

A directiva MaxConnectionsPerChild define o limite para o número de conexões que o  servidor  pode lidar. Normalmente é 1000, o seja, você pode ter 1000 pessoas acessando seu servidor simultaneamente, isso se você tiver hardware suficiente para isso.

 

Leia; http://www.hosting.com/support/linux/tuning-the-apache-prefork-mpm

 

 

Link to comment
Share on other sites

Amigos,

 

Eu sou novo na área, sempre tive revenda e agora estou com um servidor dedicado. Portanto, as dúvidas no começo serão bem idiotas mesmo.

 

Por favor, para o meu servidor abaixo, quais seriam as melhores configurações para evitar abusos?

 

Xeon E3-1240 4x3.33GHz

 

CPU  Xeon (4x3.33GHz 8MB)

RAM  8GB DDR3

Bandwidth  9000GB

HDD1  1000GB SATA-II

HDD2  1000GB SATA-II

Port Speed  100 Mbit

Control Panel  cPanel + Softaculous/RVSkins

 

No caso, pretendo ter pelo menos uns 400 clientes neste servidor.

 

90% usa Joomla.

 

Aceito dicas de otimização.

 

Obrigado.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...