Scalability in LAMP web applications

No Thumbnail Available

URL

Journal Title

Journal ISSN

Volume Title

School of Science | Master's thesis
Checking the digitized thesis and permission for publishing
Instructions for the author

Date

2010

Major/Subject

Vuorovaikutteinen digitaalinen media

Mcode

T-111

Degree programme

Language

en

Pages

vii + 65

Series

Abstract

The study has researched the scalability in LAMP web applications. The objective of this study has been to examine how one can make LAMP web application more easily scalable and measure how well the application scales. In this context, LAMP means Linux operating system, Apache HTTP server, MySQL database and PHP programming language. Scalability can be defined as a system that can accommodate increased usage, increased dataset and be maintainable. Database is hard to scale in high volume web applications, which is a known problem. There's only one solution for this problem if relational databases are used: data sharding. Web application's scalability can be measured with load testing and server monitoring. The case study presents a web application, which has properties found in many social networking based web applications. Data sharding and caching are used in the case study. The web application has been installed in virtual machines. There have been one to four virtual machines used during the case study. The web application has been load tested with ApacheBench and Tsung softwares. The servers have been monitored with Munin software. The analyzation of the results of the load tests shows that the more virtual machines have been used, the better results are achieved. By using two virtual machines, database and web server, instead of one, web application's performance has improved 19%. Similarly, by using four virtual machines, two databases and two web servers, instead of one, web application's performance has improved 96%.

Tutkimuksen kohteena on ollut LAMP web-sovellusten skaalautuvuus. Työn tavoitteena on ollut selvittää kuinka LAMP web-sovelluksista voidaan luoda helpommin skaalautuvia sekä mitata näiden sovellusten skaalautuvuutta. LAMP tarkoittaa tässä yhteydessä Linux käyttöjärjestelmää, Apache HTTP palvelinta, MySQL tietokantaa sekä PHP ohjelmointikieltä. Skaalautuvuus voidaan määrittää seuraavasti: skaalautuva systeemi toimii kuorman ja datamäärän kasvaessa sekä on myös ylläpidettävissä. Tietokaiman skaalautuvuus suuren datavolyymin websovelluksissa on yleisesti tiedostettu ongelma. Tämän ongelman ratkaisemiseksi on oikeastaan vain yksi ratkaisu, jos halutaan käyttää relaatiotietokantoja: datan pirstaloiminen (data sharding). Web-sovelluksien skaalautuvuutta voidaan mitata kuormatestauksella ja palvelimien monitoroinnilla. Tapaustutkimuksessa on luotu web-sovellus, jonka ominaisuudet löytyvät monista sosiaaliseen verkostointiin perustuvista web-sovelluksista. Datan pirstaloimista ja välimuistia käytetään web-sovelluksessa. Web-sovellus on asennettu virtuaalikoneisiin. Virtuaalikoneita on ollut käytössä 1-4. Web-sovelluksen toimintoja on kuormatestattu ApacheBench- sekä Tsung- ohjelmistoilla. Palvelimia on monitoroitu Munin ohjelmistolla. Kuormatestauksen tuloksia on analysoitu ja huomattu, että käyttämällä web-sovelluksessa enemmän virtuaalikoneita päästään parempiin tuloksiin. Käyttämällä kahta virtuaalikonetta, tietokantaa ja web-palvelinta, web-sovelluksen tehokkuus on parantunut 19 % verrattuna yhteen virtuaalikoneeseen. Vastaavasti käyttämällä neljää virtuaalikonetta, kahta tietokantaa ja kahta web-palvelinta, web-sovelluksen tehokkuus on parantunut 96 % verrattuna yhteen virtuaalikoneeseen.

Description

Supervisor

Vuorimaa, Petri

Thesis advisor

Lehdonvirta, Pyry

Keywords

scalability, skaalautuvuus, web application, web-sovellus, database, tietokanta, LAMP, LAMP, load testing, kuormatestaus

Other note

Citation