Manter F5 (botão de atualização) pressionado leva a alta carga do servidor apache

1

Estamos executando um software de fórum (Woltlab Burning Board) em nosso servidor e descobrimos que, se pelo menos dois usuários continuarem recarregando o site muito rápido (mantendo o botão F5 pressionado), o carregamento do servidor sobe para > 15, levando a respostas muito lentas do servidor.

Também tentamos com uma nova instalação no fórum, sem nenhum plug-in com os mesmos resultados. A carga parece vir do apache e não do banco de dados (MySQL) ou qualquer outra coisa.

O servidor tem o seguinte hardware, que deve ser mais que suficiente: Intel Xenon 4x3,3GHz 16 GB de RAM

Captura de tela do carregamento do apache enquanto o F5 é pressionado: link

Como poderíamos evitar uma carga de servidor tão alta? Agradecemos antecipadamente

    
por schlimpf 10.05.2013 / 19:16

3 respostas

1

Procure usar o Varnish ou o nginx no servidor e armazenar em cache o conteúdo estático. Eles podem atuar como um proxy reverso de volta ao Apache. Isso faz maravilhas em todas as configurações que usei.

O maior problema pode ser uma má programação nesse software.

    
por 10.05.2013 / 19:36
1

A técnica que seus usuários estão usando é essencialmente a teoria básica por trás dos ataques distribuídos de negação de serviço (DDoS) (ou seja, inundar um servidor com tanto tráfego que não consegue lidar).

Meu conselho seria instruir seus usuários a usar o aplicativo de uma maneira diferente ou entrar em contato com eles para descobrir se há um motivo legítimo pelo qual eles estão usando o aplicativo dessa forma e corrigir esse motivo.

Se nada mais funcionar, bloquear os usuários (talvez através de fail2ban ) é um último recurso. Inundar o servidor com tráfego por qualquer meio não deve ser tolerado, e tornar as coisas mais rápidas só permitirá que os usuários problemáticos inundem o servidor com mais tráfego.

    
por 10.05.2013 / 22:34
-1

Uma maneira muito legal de limitar a quantidade de solicitações aceitas por time slot é nginx limit_req , conforme descrito muito bem aqui . Você realmente deve obter um firewall de alguns tipos e ter ele executando a instância nginx. Dessa forma, você também poderá aplicar as regras iptables e iproute2 para limitar outros tipos de tráfego (já que nginx é apenas sobre http).

Eu uso o Ubuntu para a maioria das coisas - ele vem com ufw , o que é uma ótima opção para o iptables. Taxa de limitação e tal é feito como descrito aqui . Eu gosto do bit de acondicionamento, uma vez que ambos iptables e iproute2 podem ser um pouco dolorosos para lidar com IMHO.

    
por 26.05.2015 / 13:20