Performance; omdat het kan

28 november 2009 door Stefan de Konink

Zoals een aantal ingewijden weten loop ik niet te koop met mijn voorliefde voor Apache. Ik moet eerlijk bekennen dat ik wel eens een Apache module heb geschreven, en sterker nog: gebruik heb gemaakt van de mogelijkheden die Apache mij bood. Echter tijden veranderen en je mist de boot als je niet met nieuwe hypes mee gaat.

Er zijn een aantal hypes die je mijn inziens moet zien vermijden binnen OpenStreetMap. De grootste hype is Ruby, direct gevolgd door MySQL (ik wilde PostgreSQL schrijven), maar op een goede derde plek komt toch zeker mod_tile. En daar gaan we het deze ochtend over hebben. Mod_tile samen met renderd vormen samen een infrastructuur om ‘efficiĆ«nt’ OpenStreetMap te renderen. Het maakt gebruik van een concept ‘metatiles’ dat in plaats van ‘plaatje voor plaatje’ gelijk een groter gebied neemt.

Door de combinatie mod_tile en renderd in zijn standaard configuratie te gebruiken kun je met een aantal metatiles en wat ‘processing’ kracht van de webserver voorkomen dat je bestandssyteem volloopt en on-demand renderen. Wel een redelijk idee…

Totdat je bedenkt dat het statisch uitserveren van plaatjes een ander voordeel met zich meebrengt. De client kan via de standaard infrastructuur van expires en e-tags zelf uitvissen of een plaatje behouden moet blijven of weggegooid mag worden. De webserver doet alleen waar hij goed in is het serveren van statische content en alleen als de content niet bestaat wordt er via de 404 fout bemiddelaar een verzoekje richting het eerder beschreven renderd gestuurd.

Nu was er de afgelopen tijd een mooi scriptje dat het bovenstaande deed. Echter moest dat python scriptje zelf zijn metatiles opknippen. Helaas kon dat voor een aantal (snelle) requests betekenen dat, dat renderen en opknippen soms ook nog eens meerdere keren parallel werd gedaan.

Nu zie je hierboven twee verhalen staan, voorstanders van mod_tile zullen claimen dat die oplossing veel beter is dan plaatjes genereren. En visa versa. Ldp is zo’n mod_tile aanhanger, en ik een statische cache aanhanger. Ik besloot de competitie aan te gaan om onze Cherokee + Renderd + Mapnik webstek te versnellen.

Zo gezegd zo gedaan. Onze productie servert heeft nu experimentele acceleratie. En het mooie is nog wel, dat het daar helemaal niet bij hoeft te blijven…

…en in welke categorie Martijn van Exel onze nieuwe blog administrator deze blog gaat zetten weet ik nog niet, ik wens hem wel succes met zijn nieuwe rol.

Tags:

Comments are closed.