grommunio forbedrer postkassens ytelse
Den er allerede inkludert i community-versjonen, og vil snart være tilgjengelig for alle grommunio-kunder: Takket være en endring i måten grommunio håndterer e-postdatabaser på, vil teamene dra nytte av betydelig forbedret postkasseytelse.
Problemet er komplekst, men utbredt: Tidligere kunne det skje at brukerne opplevde lengre ventetider når mange klienter hadde tilgang til individuelle postkasser samtidig, for eksempel når flere brukere utførte lengre søk i en postkasse samtidig, for eksempel når de forberedte seg til et møte. Årsaken til dette er ønsket om datakonsistens: Bare én klient om gangen kan få tilgang til dataene i en postkasse og gjøre endringer, og deretter er det neste klients tur - ellers er det fare for inkonsistens. Denne “serielle” tilgangen (dvs. den ene etter den andre) kan ta lang tid, spesielt med større datasett (og mange klienter som vil ha tilgang samtidig). Problemet er ikke begrenset til grommunio, men gjelder i prinsippet alle nett- og e-posttjenester: Hvis du vil ha konsistente data, må du behandle tilgangene etter hverandre; hvis du vil ha høy ytelse, må du parallellisere tilgangene. Men det finnes smarte løsninger som kan hjelpe på dette dilemmaet. grommunio har implementert en av disse og dermed oppnådd en stor økning i ytelsen.
Skrive- og skrivebeskyttet: seriell eller parallell?
Løsningen på problemet: Det skilles mellom skrive- og skrivebeskyttet tilgang. Skrivebeskyttet tilgang (f.eks. fra en e-postklient som oppdaterer en delt mappe) kan tillates av serveren parallelt av flere klienter samtidig, og caching er også mulig. En “single source of truth” er bare nødvendig for skrivetilgang, dvs. eksklusiv tilgang for én klient - ellers kan det oppstå inkonsistente data, eller én klient kan overskrive endringer som er gjort av en annen.
Teknisk sett krever dette en viss forståelse av hvordan grommunio (eller en hvilken som helst annen e-post- og databaseserver) fungerer. I grommunio finnes det en sentral MySQL-database for metadata og cacher for brukerens metadata, dvs. en stor tabell med alle data, inkludert for eksempel innholdsfortegnelsen for informasjon om brukere og tildelingen av hvor nøyaktig en brukers postkasse kan finnes.
Det finnes også en SQLite-database for hver bruker, som inneholder de spesifikke brukerdataene, inkludert alle e-poster. For den enkelte bruker er den også den sentrale komponenten i postkassen, men den kan også være en flaskehals hvis det kommer inn mange forespørsler samtidig. Systemet er likevel fleksibelt og har vist seg å fungere godt, det kan skaleres etter behov og er en viktig del av grommunios høye postkasseytelse.
Men hvis en klient for eksempel utfører et søk i en større postkasse, blokkeres denne for andre forespørsler inntil søkeforespørselen er ferdigbehandlet. På serversiden er dette implementert via en Mutex, andre klienter må vente og kan i verste fall få en timeout - noe som betyr en feilmelding til brukeren.
Økt postkasseytelse takket være en administrasjonsserver som tar situasjonsbestemte beslutninger
Fordi mutex egentlig ikke gir mening for søk eller lignende skrivebeskyttede tilganger, ettersom databasen ikke endres, har utviklerne av grommunio implementert en løsning som fjerner denne flaskehalsen. Utviklerne har tilpasset management server (exmdb) til dette formålet. Den er kompleks og har allerede koordinert tilgangen med sine mer enn 120 funksjoner. For å innlemme parallellisering for skrivebeskyttet tilgang måtte utviklerne tilpasse over 18 000 kodelinjer. Der det tidligere var én mutex per postkasse som forhindret konflikter, men som også av og til forårsaket overbelastning, klarer det nye systemet seg uten en “stor” mutex, og i stedet inspiserer det hver forespørsel og avgjør fra situasjon til situasjon om den kan parallelliseres på en trygg måte.
“Denne tilnærmingen har vist seg å være betydelig raskere, mer fleksibel og er merkbar for alle team som jobber med delte postkasser, spesielt i det daglige arbeidet. Et typisk eksempel er felles forberedelse av et teammøte, der alle deltakerne ønsker å oppdatere hverandre raskt i timene før møtet. Men det er bare ett eksempel, brukerne forteller oss entusiastisk om andre situasjoner som nå har blitt betydelig fremskyndet av endringen. ”, sier grommunios CTO Michael Kromer.
Les mer om andre grommunio funksjoner.