markvsilva Postado Março 28, 2013 Compartilhar Postado Março 28, 2013 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 para o comentário Compartilhar em outros sites More sharing options...
Jamis Henrique Postado Março 29, 2013 Compartilhar Postado Março 29, 2013 O pouco que li me chamou muita atenção e creio que irá ajudar muitas pessoas, inclusive eu. Amanhã leio com mais calma :) Link para o comentário Compartilhar em outros sites More sharing options...
thonny Postado Abril 5, 2013 Compartilhar Postado Abril 5, 2013 Me ajudou bastante, muito obrigado Link para o comentário Compartilhar em outros sites More sharing options...
JulianoCunha Postado Setembro 6, 2013 Compartilhar Postado Setembro 6, 2013 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 para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados