Resumo do documento: Este documento tem como objectivo especificar os requisitos testes para a verificação a disponibilidade e o desempenho a medida que a carga aumenta no sistema. Palavras-Chave: Escalabilidade Histórico de versões: Versão Data Realizado por V1.0 Jennifer Santos V1.1 V1.2
Índice 1 Introdução... 3 2 Testes... 4 3 Anexos... 6 Página 2/30
1 Introdução A Escalabilidade é um requisito não funcional da aplicação que deve ser considerado em todos os projectos porém, dependendo das necessidades do cliente (requisito funcional) e da quantidade de utilizadores, a escalabilidade pode ter um peso maior ou menor dentro do projecto. Para o projecto de estágio a escalabilidade vai ser meramente de testes para poder ter uma noção de como a aplicação comportará a medida que o número de utilizadores aumentar. Uma vez que a aplicação será usada somente pelos funcionários da associação, em média o número máximo de utilizadores poderá rondar por volta de 100. Os testes foram efectuados com a ferramenta httperf, que é uma ferramenta para medir o desempenho do servidor Web. Entre os módulos implementados foram escolhidos a página que será mais utilizada pelos utilizadores do sistema. Página 3/30
2 Testes Nessa sessão serão apresentadas os testes para medir o throughput dos pedidos de um servidor web. Para tal foi necessário enviar várias solicitações ao servidor, com uma taxa fixa de forma a medir a taxa com que as respostas chegavam. Cada teste foi efectuada em média 5 vezes e a taxa de 10 em milseguntos, e solicitações variou entre os 250 a 1500 pedidos. De forma a ver o nível de taxa de resposta quando o servidor estiver no seu limite. Máquina de teste: Características do PC Fedora 15 com um processador Inter(R) Core (TM)Duo CPU P8600 2.40GHz Memoria (Ram) 4GB Página de teste: O teste foi feita na página helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag, sendo essa a pagina que será mais utilizada pelos utilizadores. Ferramenta de testes: httperf, que é uma ferramenta para medir o desempenho do servidor Web. Para executar este teste, é necessário invocar httperf nas máquinas cliente. Abaixo será apresentado a linha de comando inicial de testes: httperf --client=0/1 --server=helios.srcentro-anet.org --port=80 uri=http://helios.srcentroanet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --num-conns=250 A taxa em que os pedidos são emitidos é de 10 por segundo. O teste envolve o início de um total de 250 conexões TCP e em cada conexão uma chamada HTTP é feita (a chamada consiste no envio de um pedido e receber uma resposta). Página 4/30
Gráfico estatístico: Os resultados do gráfico são os dados do pior resultado obtido dos 5 vezes de repetição. Abaixo é apresentado os testes: Estátistica de Escalabilidade do SI ANET Número conexões 1600 1400 1200 1000 800 600 400 200 0 Teste 1 Teste 2 Teste 3 Teste 4 num_connections 250 500 1000 1500 Tempo 25,053 50,087 100,056 150,114 O gráfico a vermelho mostra o tempo médio de resposta para as chamadas de sucesso, como podemos ver pelo gráfico os tempos obtidos por cada teste são aproximadamente iguais, o que nos leva a concluir que a aplicação é escalável ate 1500 conexões que foi o limite máximo testado. A aplicação vai ser utilizado em média por 200 funcionários, uma vez que a aplicação é meramente administrativa, com esses testes podemos concluir que ate um número máximo de 1500 a aplicação continuará a ser escalável. Com esse tipo de teste tem-se como objectivo: - Medir os tempos de resposta, as taxas de transferência, e os níveis de utilização de recursos, e para identificar ponto de ruptura da aplicação, assumindo que o ponto de ruptura ocorre abaixo da condição de carga de pico. Benefícios para esse tipo de teste: - Determina o rendimento necessário para suportar a carga de pico de produção esperado. - Detecta problemas de concorrência. - Detecta erros de funcionalidade sob carga. Página 5/30
3 Anexos Resultados de benchmarking Parâmetros definidos inicialmente na configuração para cada teste: Parâmetros Descrição -- client=0/1 Especifica que a máquina httperf em execução é um cliente, com um total de N clientes, com N a variar normalmente de 0 a N-1. Este parâmetro também é usado para garantir que nem todos os clientes geram cargas de trabalho perfeitamente idênticos. server Especifica o endereço ou IP do servidor que será feito o teste neste caso: helios.srcentro-anet.org Port Porto de acesso definido. Uri Especifica o URls da página que vai ser sujeito a teste no caso: http://helios.srcentroanet.org/anet_si/index.php?mod=man_insc_estag Rate Especifica a taxa fixa na qual as conexões ou sessões são criadas num-conns Especifica o número total de conexões para criar Num-calls Especifica o número total de chamadas a emitir em cada conexão antes de essas serem fechadas. Se N for maior que 1, o servidor deve suportar conexões persistentes. Lista de testes efectuadas com os respectivos dados: Resultado 1 - Teste 1 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=250 --recv-buffer=16384 --num-conns=250 Página 6/30
Total: connections 250 requests 500 replies 500 test-duration 25.036 s Connection rate: 10.0 conn/s (100.1 ms/conn, <=2 concurrent connections) Connection time [ms]: min 109.9 avg 130.3 max 184.0 median 127.5 stddev 13.9 Connection time [ms]: connect 46.2 Request rate: 20.0 req/s (50.1 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.0 stddev 0.1 (5 samples) Reply time [ms]: response 42.1 transfer 0.0 Reply status: 1xx=0 2xx=500 3xx=0 4xx=0 5xx=0 CPU time [s]: user 1.33 system 20.52 (user 5.3% system 82.0% total 87.3%) Página 7/30
Resultado 2 - Teste 1 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=250 --recv-buffer=16384 --num-conns=250 Total: connections 250 requests 500 replies 500 test-duration 25.038 s Connection rate: 10.0 conn/s (100.2 ms/conn, <=3 concurrent connections) Connection time [ms]: min 87.9 avg 143.1 max 247.6 median 136.5 stddev 20.4 Connection time [ms]: connect 47.1 Request rate: 20.0 req/s (50.1 ms/req) Reply rate [replies/s]: min 19.8 avg 19.9 max 20.0 stddev 0.1 (5 samples) Reply time [ms]: response 48.0 transfer 0.0 Reply status: 1xx=0 2xx=500 3xx=0 4xx=0 5xx=0 CPU time [s]: user 1.19 system 17.44 (user 4.7% system 69.7% total 74.4%) Página 8/30
Resultado 3 - Teste 1 --recv-buffer=16384 --num-conns=250 Total: connections 250 requests 500 replies 500 test-duration 25.053 s Connection rate: 10.0 conn/s (100.2 ms/conn, <=3 concurrent connections) Connection time [ms]: min 100.1 avg 148.0 max 253.3 median 140.5 stddev 23.5 Connection time [ms]: connect 48.4 Request rate: 20.0 req/s (50.1 ms/req) Reply rate [replies/s]: min 19.6 avg 20.0 max 20.4 stddev 0.3 (5 samples) Reply time [ms]: response 49.8 transfer 0.0 Reply status: 1xx=0 2xx=500 3xx=0 4xx=0 5xx=0 CPU time [s]: user 0.93 system 16.82 (user 3.7% system 67.1% total 70.9%) Página 9/30
Resultado 4 - Teste 1 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=250 --recv-buffer=16384 --num-conns=250 Total: connections 250 requests 500 replies 500 test-duration 25.046 s Connection rate: 10.0 conn/s (100.2 ms/conn, <=3 concurrent connections) Connection time [ms]: min 98.5 avg 144.1 max 269.6 median 135.5 stddev 22.8 Connection time [ms]: connect 48.2 Request rate: 20.0 req/s (50.1 ms/req) Reply rate [replies/s]: min 19.6 avg 19.9 max 20.2 stddev 0.2 (5 samples) Reply time [ms]: response 48.0 transfer 0.0 Reply status: 1xx=0 2xx=500 3xx=0 4xx=0 5xx=0 CPU time [s]: user 1.20 system 17.32 (user 4.8% system 69.1% total 73.9%) Página 10/30
Resultado 5 - Teste 1 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=250 --recv-buffer=16384 --num-conns=250 Total: connections 250 requests 500 replies 500 test-duration 25.027 s Connection rate: 10.0 conn/s (100.1 ms/conn, <=3 concurrent connections) Connection time [ms]: min 103.6 avg 148.3 max 256.6 median 144.5 stddev 23.0 Connection time [ms]: connect 48.5 Request rate: 20.0 req/s (50.1 ms/req) Reply rate [replies/s]: min 19.6 avg 20.0 max 20.2 stddev 0.2 (5 samples) Reply time [ms]: response 49.9 transfer 0.0 Reply status: 1xx=0 2xx=500 3xx=0 4xx=0 5xx=0 CPU time [s]: user 1.03 system 15.98 (user 4.1% system 63.9% total 68.0%) Página 11/30
***************************************************************************** TESTE 2: ***************************************************************************** Resultado 1 - Teste 2 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=500 --recv-buffer=16384 --num-conns=500 Total: connections 500 requests 1000 replies 1000 test-duration 50.016 s Connection rate: 10.0 conn/s (100.0 ms/conn, <=3 concurrent connections) Connection time [ms]: min 92.3 avg 123.8 max 264.7 median 119.5 stddev 17.2 Connection time [ms]: connect 38.7 Request rate: 20.0 req/s (50.0 ms/req) Página 12/30
Reply rate [replies/s]: min 19.8 avg 20.0 max 20.2 stddev 0.1 (10 samples) Reply time [ms]: response 42.6 transfer 0.0 Reply status: 1xx=0 2xx=1000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 0.78 system 44.59 (user 1.6% system 89.2% total 90.7%) Resultado 2 - Teste 2 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=500 --recv-buffer=16384 --num-conns=500 Total: connections 500 requests 1000 replies 1000 test-duration 50.005 s Connection rate: 10.0 conn/s (100.0 ms/conn, <=3 concurrent connections) Connection time [ms]: min 102.8 avg 120.3 max 264.8 median 116.5 stddev 15.8 Connection time [ms]: connect 37.5 Página 13/30
Request rate: 20.0 req/s (50.0 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.0 stddev 0.1 (10 samples) Reply time [ms]: response 41.4 transfer 0.0 Reply status: 1xx=0 2xx=1000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 0.80 system 44.80 (user 1.6% system 89.6% total 91.2%) Resultado 3 - Teste 2 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=500 --recv-buffer=16384 --num-conns=500 Página 14/30
Total: connections 500 requests 1000 replies 1000 test-duration 50.087 s Connection rate: 10.0 conn/s (100.2 ms/conn, <=3 concurrent connections) Connection time [ms]: min 94.5 avg 123.3 max 220.0 median 119.5 stddev 14.0 Connection time [ms]: connect 38.3 Request rate: 20.0 req/s (50.1 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.2 stddev 0.1 (10 samples) Reply time [ms]: response 42.5 transfer 0.0 Reply status: 1xx=0 2xx=1000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 0.72 system 39.95 (user 1.4% system 79.8% total 81.2%) Página 15/30
Resultado 4 - Teste 2 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=500 --recv-buffer=16384 --num-conns=500 Total: connections 500 requests 1000 replies 1000 test-duration 50.013 s Connection rate: 10.0 conn/s (100.0 ms/conn, <=3 concurrent connections) Connection time [ms]: min 104.7 avg 122.1 max 211.4 median 115.5 stddev 14.5 Connection time [ms]: connect 39.3 Request rate: 20.0 req/s (50.0 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.0 stddev 0.1 (10 samples) Reply time [ms]: response 41.4 transfer 0.0 Reply status: 1xx=0 2xx=1000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 0.99 system 44.63 (user 2.0% system 89.2% total 91.2%) Página 16/30
Teste 1 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=500 --recv-buffer=16384 --num-conns=500 Total: connections 500 requests 1000 replies 1000 test-duration 50.049 s Connection rate: 10.0 conn/s (100.1 ms/conn, <=3 concurrent connections) Connection time [ms]: min 79.6 avg 122.6 max 257.3 median 117.5 stddev 16.4 Connection time [ms]: connect 39.4 Request rate: 20.0 req/s (50.0 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.2 stddev 0.1 (10 samples) Reply time [ms]: response 41.6 transfer 0.0 Reply status: 1xx=0 2xx=1000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 0.80 system 42.20 (user 1.6% system 84.3% total 85.9%) Página 17/30
***************************************************************************** TESTE 3 ***************************************************************************** Resultado 1 - Teste 3 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=1000 --recv-buffer=16384 --num-conns=1000 Total: connections 1000 requests 2000 replies 2000 test-duration 100.041 s Connection rate: 10.0 conn/s (100.0 ms/conn, <=3 concurrent connections) Connection time [ms]: min 85.7 avg 121.3 max 286.2 median 116.5 stddev 15.5 Connection time [ms]: connect 39.7 Página 18/30
Request rate: 20.0 req/s (50.0 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.0 stddev 0.1 (20 samples) Reply time [ms]: response 40.8 transfer 0.0 Reply status: 1xx=0 2xx=2000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 1.60 system 91.00 (user 1.6% system 91.0% total 92.6%) Resultado 2 - Teste 3 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=1000 --recv-buffer=16384 --num-conns=1000 Total: connections 1000 requests 2000 replies 2000 test-duration 100.034 s Página 19/30
Connection rate: 10.0 conn/s (100.0 ms/conn, <=3 concurrent connections) Connection time [ms]: min 103.9 avg 122.6 max 241.3 median 118.5 stddev 14.6 Connection time [ms]: connect 39.9 Request rate: 20.0 req/s (50.0 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.2 stddev 0.1 (20 samples) Reply time [ms]: response 41.3 transfer 0.0 Reply status: 1xx=0 2xx=2000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 2.06 system 87.03 (user 2.1% system 87.0% total 89.1%) Página 20/30
Resultado 3 - Teste 3 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=1000 --recv-buffer=16384 --num-conns=1000 Total: connections 1000 requests 2000 replies 2000 test-duration 100.016 s Connection rate: 10.0 conn/s (100.0 ms/conn, <=3 concurrent connections) Connection time [ms]: min 110.4 avg 126.1 max 270.6 median 121.5 stddev 15.3 Connection time [ms]: connect 42.5 Request rate: 20.0 req/s (50.0 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.2 stddev 0.1 (20 samples) Reply time [ms]: response 41.8 transfer 0.0 Reply status: 1xx=0 2xx=2000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 1.81 system 90.94 (user 1.8% system 90.9% total 92.7%) Página 21/30
Resultado 4 - Teste 3 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=1000 --recv-buffer=16384 --num-conns=1000 Total: connections 1000 requests 2000 replies 2000 test-duration 100.045 s Connection rate: 10.0 conn/s (100.0 ms/conn, <=4 concurrent connections) Connection time [ms]: min 86.7 avg 129.0 max 335.8 median 123.5 stddev 18.8 Connection time [ms]: connect 42.4 Request rate: 20.0 req/s (50.0 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.2 stddev 0.1 (20 samples) Reply time [ms]: response 43.3 transfer 0.0 Reply status: 1xx=0 2xx=2000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 2.48 system 78.01 (user 2.5% system 78.0% total 80.4%) Página 22/30
Resultado 3 - Teste 3 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=1000 --recv-buffer=16384 --num-conns=1000 Total: connections 1000 requests 2000 replies 2000 test-duration 100.045 s Connection rate: 10.0 conn/s (100.0 ms/conn, <=3 concurrent connections) Connection time [ms]: min 100.8 avg 136.7 max 284.0 median 129.5 stddev 19.2 Connection time [ms]: connect 46.4 Request rate: 20.0 req/s (50.0 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.0 stddev 0.0 (20 samples) Reply time [ms]: response 45.2 transfer 0.0 Reply status: 1xx=0 2xx=2000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 3.37 system 71.62 (user 3.4% system 71.6% total 75.0%) Página 23/30
Resultado 4 - Teste 3 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=1000 --recv-buffer=16384 --num-conns=1000 Total: connections 1000 requests 2000 replies 2000 test-duration 100.056 s Connection rate: 10.0 conn/s (100.1 ms/conn, <=3 concurrent connections) Connection time [ms]: min 111.3 avg 133.2 max 251.6 median 128.5 stddev 15.5 Connection time [ms]: connect 44.5 Request rate: 20.0 req/s (50.0 ms/req) Reply rate [replies/s]: min 19.6 avg 20.0 max 20.2 stddev 0.2 (20 samples) Reply time [ms]: response 44.4 transfer 0.0 Reply status: 1xx=0 2xx=2000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 4.65 system 82.66 (user 4.6% system 82.6% total 87.3%) Página 24/30
***************************************************************************** TESTE 4 ***************************************************************************** Resultado 1 - Teste 4 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=1500 --recv-buffer=16384 --num-conns=1500 Total: connections 1500 requests 3000 replies 3000 test-duration 150.017 s Connection rate: 10.0 conn/s (100.0 ms/conn, <=3 concurrent connections) Connection time [ms]: min 107.3 avg 125.7 max 266.7 median 121.5 stddev 15.5 Connection time [ms]: connect 41.2 Request rate: 20.0 req/s (50.0 ms/req) Página 25/30
Reply rate [replies/s]: min 19.8 avg 20.0 max 20.2 stddev 0.1 (30 samples) Reply time [ms]: response 42.2 transfer 0.0 Reply status: 1xx=0 2xx=3000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 2.78 system 146.80 (user 1.9% system 97.9% total 99.7%) Resultado 2 - Teste 4 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=1500 --recv-buffer=16384 --num-conns=1500 Total: connections 1500 requests 3000 replies 3000 test-duration 150.035 s Connection rate: 10.0 conn/s (100.0 ms/conn, <=4 concurrent connections) Connection time [ms]: min 107.4 avg 125.4 max 303.9 median 121.5 stddev 15.3 Connection time [ms]: connect 41.8 Request rate: 20.0 req/s (50.0 ms/req) Página 26/30
Reply rate [replies/s]: min 19.8 avg 20.0 max 20.2 stddev 0.1 (30 samples) Reply time [ms]: response 41.8 transfer 0.0 Reply status: 1xx=0 2xx=3000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 2.11 system 147.48 (user 1.4% system 98.3% total 99.7%) Resultado 3 - Teste 4 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=1500 --recv-buffer=16384 --num-conns=1500 Total: connections 1500 requests 3000 replies 3000 test-duration 150.017 s Connection rate: 10.0 conn/s (100.0 ms/conn, <=4 concurrent connections) Connection time [ms]: min 109.4 avg 128.6 max 311.5 median 124.5 stddev 15.9 Página 27/30
Connection time [ms]: connect 43.8 Request rate: 20.0 req/s (50.0 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.2 stddev 0.1 (30 samples) Reply time [ms]: response 42.4 transfer 0.0 Reply status: 1xx=0 2xx=3000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 2.07 system 146.66 (user 1.4% system 97.8% total 99.1%) Resultado 4 - Teste 4 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=1500 --recv-buffer=16384 --num-conns=1500 Total: connections 1500 requests 3000 replies 3000 test-duration 150.022 s Página 28/30
Connection rate: 10.0 conn/s (100.0 ms/conn, <=3 concurrent connections) Connection time [ms]: min 100.0 avg 128.5 max 239.9 median 124.5 stddev 14.3 Connection time [ms]: connect 44.2 Request rate: 20.0 req/s (50.0 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.2 stddev 0.1 (30 samples) Reply time [ms]: response 42.2 transfer 0.0 Reply status: 1xx=0 2xx=3000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 2.11 system 147.25 (user 1.4% system 98.1% total 99.6%) Resultado 5 - Teste 4 uri=http://helios.srcentro-anet.org/anet_si/index.php?mod=man_insc_estag --rate=10 --numconns=1500 httperf --client=0/1 --server=helios.srcentro-anet.org --port=80 --uri=/ --rate=10 --send- Página 29/30
buffer=4096 --recv-buffer=16384 --num-conns=1500 Maximum connect burst length: 2 Total: connections 1500 requests 3000 replies 3000 test-duration 150.114 s Connection rate: 10.0 conn/s (100.1 ms/conn, <=4 concurrent connections) Connection time [ms]: min 95.2 avg 131.6 max 295.7 median 125.5 stddev 19.1 Connection time [ms]: connect 45.1 Request rate: 20.0 req/s (50.0 ms/req) Reply rate [replies/s]: min 19.8 avg 20.0 max 20.2 stddev 0.1 (30 samples) Reply time [ms]: response 43.2 transfer 0.0 Reply status: 1xx=0 2xx=3000 3xx=0 4xx=0 5xx=0 CPU time [s]: user 2.69 system 130.32 (user 1.8% system 86.8% total 88.6%) Página 30/30