12.3.2013

Linux palvelimena, kotitehtävä 5: Optimointi

Tero Karvinen says: w07 Tue 2013-02-12 at 15:09
 

Kotitehtävä optimointi:
Tee kaksi seuraavista
a) Asenna Varnish. Muuta jotain sen asetusta VCL-kielellä (esim iso-kuvat suoraan läpi – ei välimuistiin)
b) Analysoi ja nopeuta weppisivua YSlow -lisäkkeen avulla
c) Analysoi ja nopeuta weppisivua Firebug -lisäkkeen Net-välilehden avulla
d) Etsi jokin nopeuden analysoinnissa auttava palvelu wepistä ja käytä sitä
f) Asenna nginx käänteisproxyksi


Tästä lähdin tahkoamaan ensimmäisenä Varnishin asennusta ja testausta.

Tehtävään käytettävä kone:

HP elitebook 2530p
Core2Duo L9400 1,86 GHz
4 GB muistia
Käyttöjärjestelmänä Xubuntu 12.04 32-bit.


Koneeseen oli jo valmiiksi asennettu toimiva LAMP-stack ja wordpress, joten lähdin testaamaan olemassa olevan sivuston suorituskykyä.

Perinteiseen tapaan aloitus:

$ sudo apt-get update

ja vielä päivitys

$ sudo apt-get upgrade -y

Testataan suorituskykyä Apache Benchmarkilla ja lähetetään palvelimelle 400 yhteyspyyntöä, joista 200 samanaikaisesti:

$ ab -n 800 -c 400 http://localhost/~a1003594/wordpress/

Tuloksena saatiin seuraavaa:

Concurrency Level:      400
Time taken for tests:   5.107 seconds
Complete requests:      800
Failed requests:        144
   (Connect: 0, Receive: 0, Length: 144, Exceptions: 0)
Write errors:           0
Non-2xx responses:      656
Keep-Alive requests:    656
Total transferred:      404352 bytes
HTML transferred:       209920 bytes
Requests per second:    156.65 [#/sec] (mean)
Time per request:       2553.410 [ms] (mean)
Time per request:       6.384 [ms] (mean, across all concurrent requests)
Transfer rate:          77.32 [Kbytes/sec] received


800 pyynnöstä 144 epäonnistui, ja palvelin pystyi käsittelemään 156 pyyntöä sekunnissa.

Seuraavaksi asennetaan Varnish ja kokeillaan samaa sen kanssa.

$ sudo apt-get install varnish -y

jonka jälkeen asetettiin varnish kuuntelemaan porttia 80:

$ sudo nano /etc/default/varnish

Muutetaan seuraavalla tavalla:

DAEMON_OPTS="-a :80 \

jonka jälkeen muutetaan ports.conffia

$ sudo nano /etc/apache2/ports.conf

NameVirtualHost *:8080
Listen 8080

Virtuaalipalvelimen asetuksia muokattiin seuraavasti:

$ sudo nano /etc/apache2/sites-available/testsite.com

<VirtualHost *:8080>
        ServerName www.testsite.com
        ServerAlias testsite.com
        DocumentRoot /home/a1003594/public_html/testsite.com
</VirtualHost>

ja sama muutos tehtiin default-virtuaalipalvelimelle.

Tämän jälkeen käynnistettiin apache uudelleen, sekä testasin porttiohjauksen toimivuuden surffaamalla osoitteeseen localhost:8080, joka toimi mainosti. Sen jälkeen käynnistin vielä Varnishin uudelleen:

$ sudo service varnish restart

Ajoin seuraavaksi samat 800 yhteyspyyntöä kuin aikaisemminkin seuraavin tuloksin:

 Concurrency Level:      400
Time taken for tests:   0.110 seconds
Complete requests:      800
Failed requests:        0
Write errors:           0
Keep-Alive requests:    0
Total transferred:      759190 bytes
HTML transferred:       577600 bytes
Requests per second:    7291.89 [#/sec] (mean)
Time per request:       54.855 [ms] (mean)
Time per request:       0.137 [ms] (mean, across all concurrent requests)
Transfer rate:          6757.72 [Kbytes/sec] received

Nopeus oli siis parantunut huomattavasti. Yksikään yhteys ei epäonnistunut, ja yhteyksiäkin pystyttiin jo käsittelemään hulppeasti melkein 7300 sekunnissa. Kaiken kaikkiaan Varnish tekee siis sen minkä lupaakin.

Vielä piti muokata jotain Varnishin asetusta VCL-kielellä. Kun en muutakaan keksinyt, tein serverin nimen muuttamisen niin kuin moni muukin.

$ sudo nano /etc/varnish/default.vcl

unset.beresp.http.Server;
set beresp.http.Server = “SeveriServeri”;

Varnishin uudelleen käynnistys ja kokeilu curlilla

$ curl -I http://localhost

HTTP/1.1 200 OK
Vary: Accept-Encoding
Content-Type: text/html;charset=UTF-8
Server: SeveriServeri
Date: Tue, 12 Mar 2013 21:12:48 GMT
X-Varnish: 1150814261
Age: 0
Via: 1.1 varnish
Connection: keep-alive

Ja näin on serverin nimi muutettu. Sitä missä muualla se näkyy kuin curlissa, en tiedä.

Ei kommentteja:

Lähetä kommentti