Eu estava fazendo alguns testes de desempenho para o Apache usando ab. O Apache, no nosso caso, está funcionando apenas como uma carga de balanceamento de carga entre dois servidores Liferay.
Inicialmente, fiz o teste para 1000 solicitações com 100 solicitações simultâneas. Os testes correram bem.
Mas quando eu executo os testes para 500 usuários simultâneos com 1000 solicitações, os testes falharam.
$ ab -c 500 -n 1000 http://103.X.X.X/web/guest/statistics
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation,
Benchmarking (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
apr_socket_recv: Connection timed out (110)
Total of 386 requests completed
Pode ver a seguinte mensagem no Kernel.
May 13 14:21:15 www kernel: possible SYN flooding on port 80. Sending cookies.
Eu tentei aumentar o valor para os dois parâmetros a seguir, mas os testes ainda estavam falhando e o mesmo erro pode ser visto no arquivo de log do sistema.
# echo "1024" > /proc/sys/net/core/somaxconn
# echo "2048" > /proc/sys/net/ipv4/tcp_max_syn_backlog
Temos uma campanha chegando onde esperamos um grande número de acessos ao nosso servidor. Como os testes falharam, ficamos um pouco preocupados se nosso servidor conseguirá aceitar a carga. Esperamos cerca de 500-700 solicitações simultâneas para um único dia durante a campanha.
Por favor, sugira como melhorar o desempenho do nosso servidor para suportar a carga.