...

Web Server Benchmarking: Apache 2.4 vs Nginx 1.6.2

by user

on
Category: Documents
24

views

Report

Comments

Transcript

Web Server Benchmarking: Apache 2.4 vs Nginx 1.6.2
Apache 2.4 vs Nginx 1.6.2
Web Server Benchmarking:
Apache 2.4 vs Nginx 1.6.2
Ciro Amati, Stefania Cardamone, Raffaele Schiavone
Universitá degli Studi di Salerno
January 6, 2015
Apache 2.4 vs Nginx 1.6.2
Overview
Introduzione
Server Web
Configurazione
Software
Hardware
Test
Parametri
Workload
Test Statici
Test Dinamici
Conclusioni
Apache 2.4 vs Nginx 1.6.2
Introduzione
Server Web
Server Web
I
E’ un’applicazione software
I
Esecuzione: server fisico
I
Protocollo utilizzato per la comunicazione: HTTP (o HTTPS)
I
HTTP request. Il client effettua una richiesta al Web Server
I
HTTP response. Il Web Server risponde alla richiesta
Apache 2.4 vs Nginx 1.6.2
Introduzione
Server Web
Web Server piú diffusi
Apache 2.4 vs Nginx 1.6.2
Introduzione
Server Web
Apache HTTP Server
I
I
Sviluppatore: Apache Software Foundation
Piattaforma server Web modulare piú diffusa
I
I
UNIX/Linux
Microsoft
Apache 2.4 vs Nginx 1.6.2
Introduzione
Server Web
Apache HTTP Server
I
Vantaggi:
I
I
I
I
I
Affidabilitá
Facilitá di implementazione
Modularitá
Ottima documentazione
Svantaggi:
I
I
I
Enorme consumo di memoria del demone
Basato su un’architettura multithreaded: un thread coinvolge
l’utilizzo di grandi quantitativi di memoria
Sottoposto ad attacchi di tipo DoS (slow-loris)
Apache 2.4 vs Nginx 1.6.2
Introduzione
Server Web
Nginx
I
Sviluppatore: Igor Sysoev
I
E’ anche un server proxy di posta elettronica (IMAP / POP3)
Multipiattaforma:
I
I
I
I
I
I
I
Unix
Linux
varianti di BSD
Mac OS X
Solaris
Microsoft Windows
Apache 2.4 vs Nginx 1.6.2
Introduzione
Server Web
Nginx
I
Vantaggi:
I
I
I
I
I
Web servers di tipo asincrono (Apache é basato su un’architettura
process-based e necessita di 1 thread per ogni richiesta da soddisfare)
Basato su un’architettura che consente di servire piú richieste con
uno solo o con pochissimi thread
Consumo di memoria quasi nullo o modesto
Ottima documentazione
Svantaggi:
I
I
Puó essere scaricato solo sotto forma di sorgenti da ricompilare
Documentazione ufficiale in russo
Apache 2.4 vs Nginx 1.6.2
Configurazione
Software
Software
I
Server:
I
I
I
I
Apache 2.4
Nginx 1.6.2
MySQL + PHPMyAdmin
Client:
I
Httperf 0.9.0
Apache 2.4 vs Nginx 1.6.2
Configurazione
Hardware
OS utilizzati ...
Client
MacOS
MacOS
Windows
Linux
MacOS
Linux
Server
MacOS
Windows
MacOS
MacOS
Linux
Linux
Esito
Negativo
Negativo
Negativo
Negativo
Negativo
Positivo
Apache 2.4 vs Nginx 1.6.2
Configurazione
Hardware
Apache 2.4 vs Nginx 1.6.2
Configurazione
Hardware
Hardware
I
Ubuntu 13.10
I
Memoria 5,7 GiB
Processore Intel Core i5-460M 2.53 Ghz
I
I
I
Rete: Fast Ethernet 100Mbps
Carico server a riposo:
I
I
Memoria occupata 800 MiB
Cpu utilizzata : meno del 10 %
Apache 2.4 vs Nginx 1.6.2
Test
Parametri
Parametri (1)
I
Performance misurate in termini di:
I
I
I
Numero di richieste servite al secondo
Tempo di risposta per ogni nuova connessione
Throughput
I
Risposte al secondo * [ header HTTP + dimensione file (su server)]
Apache 2.4 vs Nginx 1.6.2
Test
Parametri
Parametri (2)
I
– rate: specifica il numero di connessioni al secondo (req/s)
I
– num-conn: specifica il numero totale di connessioni da creare
I
– num-call: specifica il numero di chiamate per connessione
I
Reply rate: (min, avg, max) specifica quante connessioni ha
effettuato per secondo
I
Reply time: specifica quanto tempo il server impiega per gestire la
richiesta. Nell’esempio della slide precedente ci sono voluti 10,8
millisecondi tra linvio del primo byte della richiesta e la ricezione del
primo byte della risposta
Apache 2.4 vs Nginx 1.6.2
Test
Parametri
Parametri (3)
I
client-timo: specifica il numero di volte che una sessione di
connessione non é riuscita a causa della scadenza del timeout
I
socket-timo: il numero di volte che una connessione TCP fallisce
con un timeout a livello di socket
I
connrefused: il numero di volte che il server rifiuta una connessione
TCP
I
fd-unavail: il numero di volte che il processo httperf va oltre i file
descrittori. Quando questo conteggio é diverso da zero, il test risulta
nullo perché il client é stato sovraccaricato
Apache 2.4 vs Nginx 1.6.2
Test
Workload
Workload
Il load/stress test di un server web permette di verificare se e come un
sito web funziona al crescere delle richieste
I
E’ simulata la navigazione da parte di molti utenti
contemporaneamente
I
si verificano i tempi di risposta delle varie pagine web
analisi dei codici di risposta
I
I
verifica se il server inizia a restituire pagine con errori
Apache 2.4 vs Nginx 1.6.2
Test
Workload
Workload
I
Test statici - dimensione file:
I
I
I
Piccola (20KB)
Media (100KB)
Test dinamici
I
I
Il test é stato effettuato utilizzando MySQL (entrambi i server)
E’ stato utilizzato il database del precedente benckmark
I
I
La query é effettuata sulla tabella Country, la quale genera una lista
di 240 righe e 15 colonne
Il file PHP generato dalla richiesta, ha dimensione circa 30KB
*Download tabella Country
Apache 2.4 vs Nginx 1.6.2
Test
Test Statici
Test Statici (20KB)
I
Parametri httperf:
I
I
I
Numero connessioni: 50000
Timeout(s): 5
Dimensioni file (KB): 20
Apache 2.4 vs Nginx 1.6.2
Test
Test Statici
Test Statici (20KB) - Server Apache
Rate
100
250
400
450
500
550
580
Response time(ms)
0,8
0,8
0,9
0,9
1,0
1,6
845,1
Reply rate(avg)
100
250
400
450
500
550
362
Thrghpt (KB/s)
2023,4
5058
8093,1
9104,5
10115,9
11127,8
7280,6
Errori
Rate
580
I
client-timo
0
socket-timo
0
connrefused
0
connreset
75
Si riporta evidenziata in giallo la riga corrispondente all’ultimo test senza errori
fd-unavail
1064
other
0
Err.
0
0
0
0
0
0
1139
Apache 2.4 vs Nginx 1.6.2
Test
Test Statici
Test Statici (20KB) - Server Nginx
Rate
100
250
400
450
500
550
580
Response time(ms)
0,8
0,8
0,5
0,5
0,7
1,1
495,3
Reply rate(avg)
100
250
400
450
500
550
490,2
Thrghpt (KB/s)
2017,6
5044
8070,1
9078,7
10087,2
11096,2
9710,8
Errori
Rate
580
I
client-timo
0
socket-timo
0
connrefused
0
connreset
0
Si riporta evidenziata in giallo la riga corrispondente all’ultimo test senza errori
fd-unavail
980
other
0
Err.
0
0
0
0
0
0
980
Apache 2.4 vs Nginx 1.6.2
Test
Test Statici
Test Statici (20KB) - Benchmark on Response Time
Rate
Apache
Nginx
100
0,8
0,8
250
0,8
0,8
400
0,9
0,5
450
0,9
0,5
500
1,0
0,7
550
1,6
1,1
Apache 2.4 vs Nginx 1.6.2
Test
Test Statici
Test Statici (20KB) - Benchmark on Reply Rate
Rate
Apache
Nginx
100
100
100
250
250
250
400
400
400
450
450
450
500
500
500
550
550
550
580
362
490,2
Apache 2.4 vs Nginx 1.6.2
Test
Test Statici
Test Statici (20KB) - Benchmark on Throughput
Rate
Apache
Nginx
100
2023,4
2017,6
250
5058
5044
400
8093,1
8070,1
450
9104,5
9078,7
500
10115,9
10087,2
550
11127,8
11096,2
580
7280,6
9710,8
Apache 2.4 vs Nginx 1.6.2
Test
Test Statici
Test Statici (100KB)
I
Parametri httperf:
I
I
I
Numero connessioni: 50000
Timeout(s): 5
Dimensioni file (KB): 100
Apache 2.4 vs Nginx 1.6.2
Test
Test Statici
Test Statici (100KB) - Server Apache
Rate
50
75
100
125
Response time(ms)
0,8
0,8
0,8
4025,2
Reply rate(avg)
50
75
100
121,6
Thrghpt (KB/s)
4899
7348,5
9798
9120,3
Errori
Rate
125
I
client-timo
0
socket-timo
105
connrefused
0
connreset
426
Si riporta evidenziata in giallo la riga corrispondente all’ultimo test senza errori
fd-unavail
2468
other
0
Err.
0
0
0
2999
Apache 2.4 vs Nginx 1.6.2
Test
Test Statici
Test Statici (100KB) - Server Nginx
Rate
50
75
100
125
Response time(ms)
0,7
0,7
0,8
2435,8
Reply rate(avg)
50
75
100
131,8
Thrghpt (KB/s)
4898,3
7347,5
8697,3
10011,9
Errori
Rate
125
I
client-timo
0
socket-timo
117
connrefused
0
connreset
0
Si riporta evidenziata in giallo la riga corrispondente all’ultimo test senza errori
fd-unavail
1688
other
0
Err.
0
0
0
1805
Apache 2.4 vs Nginx 1.6.2
Test
Test Statici
Test Statici (100KB) - Benchmark on Response Time
Rate
Apache
Nginx
50
0,8
0,7
75
0,8
0,7
100
0,8
0,8
Apache 2.4 vs Nginx 1.6.2
Test
Test Statici
Test Statici (100KB) - Benchmark on Reply Rate
Rate
Apache
Nginx
50
50
50
75
75
75
100
100
100
125
121,6
131,8
Apache 2.4 vs Nginx 1.6.2
Test
Test Statici
Test Statici (100KB) - Benchmark on Throughput
Rate
Apache
Nginx
50
4899
4898,3
75
7348,5
7347,5
100
9798
8697,3
125
9120,3
10011,9
Apache 2.4 vs Nginx 1.6.2
Test
Test Dinamici
Test Dinamici (30KB) - Server Apache
Rate
100
200
300
350
Response time(ms)
2,7
2,6
3,4
1483,2
Reply rate(avg)
100
200
300
207
Thrghpt (KB/s)
3551,3
7102,4
10653,5
7204,9
Errori
Rate
350
I
client-timo
0
socket-timo
27
connrefused
0
connreset
84
Si riporta evidenziata in giallo la riga corrispondente all’ultimo test senza errori
fd-unavail
3316
other
0
Err.
0
0
0
3427
Apache 2.4 vs Nginx 1.6.2
Test
Test Dinamici
Test Dinamici (30 KB) - Server Nginx
Rate
100
200
300
350
Response time(ms)
2,6
2,5
3,2
1150,7
Reply rate(avg)
100
200
300
298
Thrghpt (KB/s)
3551,3
7102,3
10653,5
10430
Errori
Rate
350
I
client-timo
0
socket-timo
12
connrefused
0
connreset
63
Si riporta evidenziata in giallo la riga corrispondente all’ultimo test senza errori
fd-unavail
1330
other
0
Err.
0
0
0
1405
Apache 2.4 vs Nginx 1.6.2
Test
Test Dinamici
Test Dinamci (30KB) - Benchmark on Response Time
Rate
Apache
Nginx
100
2,7
2,6
200
2,6
2,5
300
3,4
3,2
Apache 2.4 vs Nginx 1.6.2
Test
Test Dinamici
Test Dinamici (30KB) - Benchmark on Reply Rate
Rate
Apache
Nginx
100
100
100
200
200
200
300
300
300
350
207
298
Apache 2.4 vs Nginx 1.6.2
Test
Test Dinamici
Test Dinamici (30KB) - Benchmark on Throughput
Rate
Apache
Nginx
100
3551,3
3551,3
200
7102,3
7102,3
300
10653,5
10653,5
350
7204,9
10430
Apache 2.4 vs Nginx 1.6.2
Conclusioni
Conclusioni
Lavoro procedente
Nostro lavoro
I
Ubuntu 13.04
I
Ubuntu 13.10
I
Memoria 3,7 GiB DDR3
I
Memoria 5,7 GiB
I
Intel Core i5-450M @2,4 GHz
I
Intel Core i5-460M 2.53 Ghz
I
Rete: Fast Ethernet 100Mbps
Server
I
Rete: Fast Ethernet 100Mbps
Server
I
I
I
I
Apache 2.4
Nginx 1.6
Client
I
I
Httperf 0.9.0
I
I
I
Apache 2.4
Nginx 1.6.2
Client
I
Httperf 0.9.0
Apache 2.4 vs Nginx 1.6.2
Conclusioni
Conclusioni
Dai test effettuati possiamo riscontrare che, rispetto al lavoro del precedente anno, i nostri risultati sono quasi equivalenti, tranne in alcuni test
per il valore di response time. Per i test statici, abbiamo riscontrato un
miglioramento di 0,1ms e 0,3ms per il response time, a ogni singolo test.
Per i test dinamici, i risultati sono del tutto equivalenti al benchmark
dell’anno precedente.
Dal punto di visto software, Apache non ha rilasciato nuove versioni.
Nginx é passato dalla versione 1.6.0 alla 1.6.2, ma con poche differenze
sostanziali. Per cui, le differenze riscontrate, dipendendo sicuramente dal
miglioramento dell’hardware utilizzato.
Dal punto di vista delle prestazioni, infine, si é potuto riscontrare che i
risultati riportati da Nginx sono leggermente inferiori rispetto ad Apache,
per quasi tutti i test.
In conclusione possiamo affermare che, nonostante Apache sia il Web
Server piú diffuso al mondo, Nginx pu essere un valido concorrente.
Fly UP