Tag: varnish

Varnish ja AB (apache bench) testaus

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.

ab n 100

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:

ab n 400 c 200

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ä:

default varnish conf

Muokattuna se näyttää tältä:

default varnish conf after

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:

default varnish port conf

.port -kohta kyseessä siis.

Vielä Apachen ports.conf pitää säätää. Muokattava kohta on heti alussa:

apache ports conf

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:

ab n 4000 c 200 after

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

Advertisements