Viikkoharjoitus 5, Linux palvelimena -kurssi: http://terokarvinen.com/2012/aikataulu-linux-palvelimena-ict4tn003-7-ict4tn003-kevaalla-2013
Tällä viikolla asennan Varnishin nopeuttaakseni omien web-sivujen latautumista. Testaan vaikutukset AB:lla (apache bench).
Testikoneena toimii sama kone kuin aikaisemmissa raporteissa, eli vanha HP:n t650.fi.
Alkutestaus
Katsotaan ensiksi kuinka hyvin Apache tällä hetkellä avaa sivut. Käytämme sivuna WordPress blogia. Asensin sisällönhallintapalvelun uudelleen userdir:iin, joten osoitteena on nyt 127.0.0.1/~uusiott/wordpress. Annetaan Apache:lle 100 pyyntöä kerralla:
$ ab -n 100 127.0.0.1/~uusiott/wordpress
Tuloksena oli erittäin pienet ajat.
Tulokset eivät olleet luotettavia, joten lisäsin pikku hiljaa vaativuutta. Sain luotettavia tuloksia kyseisillä asetuksilla:
$ ab -n 4000 -c 200 127.0.0.1/~uusiott/wordpress
Tulokset:
Varnish asennus ja käyttöönotto
Varnish asennetaan kuten melkein kaikki softa:
$ sudo apt-get install varnish
Seuraavaksi tulikin haastavampi osuus: Varnish pitää saada kuuntelemaan porttia 80 ja siirtämään tiedot eteenpäin Apachelle, joka käyttää eri porttia. Eli Apachen ports.conf -tiedostoa ja Varnishin /etc/default/ -hakemistossa olevaa varnish -tiedostoa pitää muokata. Samoin Varnishin omassa /etc/varnish/ -hakemistossa olevaa default.vcl -tiedostoa. Ensiksi kuitenkin sammutetaan apache:
$ sudo service apache2 stop
ja suljetaan portti 80:
$ sudo ufw deny 80
Tämän jälkeen ensiksi menin /etc/default hakemistoon säätämään varnish -tiedostoa. Kohta mitä piti muokata oli tämä:
Muokattuna se näyttää tältä:
Eli portti vaihdettiin 6081:stä 80:een. Seuraavaksi menin /etc/varnish -hakemistoon muokkaamaan default.vcl -tiedostoa. Tämä ei ole pakollista, koska valmiina oleva portti 8080 on hyvä. Jos haluaa käyttää jotain muuta porttia siirtämään Apachelle dataa, sen voi nyt säätää. Elikkä säädettävä kohta:
.port -kohta kyseessä siis.
Vielä Apachen ports.conf pitää säätää. Muokattava kohta on heti alussa:
Listen 80 pitää vaihtaa Listen 8080, tai siihen minkä on säätänyt /etc/varnish/default.vcl -tiedostossa. Jätin sen default.vcl tiedostossa 8080, joten muokkaan ports.conf -tiedostoa siten, että ensimmäisessä Listen kohdassa lukee Listen 80 sijaan Listen 8080. Tämän jälkeen Apache kuuntelee porttia 8080.
Testaus Varnishin käyttöönoton jälkeen
Ajoin saman komennon kuin aikaisemmin:
$ ab -n 4000 -c 200 127.0.0.1/~uusiott/wordpress
Tulokset:
Eli aika mikä testiin meni laski noin sekunnilla, vastattujen pyyntöjen määrä sekunnissa nousi noin 1200:sta noin 2000:een ja aika yhden pyynnön vastaamiseen laski noin 50 millisekuntia.
Koko toimenpiteeseen meni noin puoli tuntia.
Jos haluaa, että Varnish pistä joitain sivuja ja tiedostoja cacheen, se pitää säätää default.vcl -tiedostossa (/etc/varnish). Tiedostoon pitää kirjoittaa:
if (req.url ~ "^/*hakemisto*\.*tiedostopääte*$) {
return pass;
}
Tietenkin ilman * -merkkejä. Esimerkiksi jos kyseessä on levykuvia, jotka ovat hakemistossa images:
if (req.url ~ "^/images\.iso$) {
return pass;
}
Apuna toimi:
Suhteellisen hyvä Varnish asennus opas, jota käytin tunnilla: http://www.euperia.com/website-performance-2/setting-up-varnish-with-apache-tutorial/299
Varnishin säätäminen usealle web-palvelimelle: http://www.lullabot.com/articles/varnish-multiple-web-servers-drupal