grommunio förbättrar brevlådans prestanda
Den ingår redan i community-versionen och kommer snart att paketeras och göras tillgänglig för alla grommunio-kunder: Tack vare en förändring i hur grommunio hanterar databaser för e-postbrevlådor kommer team att dra nytta av betydligt förbättrad prestanda för brevlådor.
Problemet är komplext, men utbrett: Tidigare kunde det hända att användarna upplevde längre väntetider när många klienter kom åt enskilda brevlådor samtidigt, t.ex. när flera användare gjorde längre sökningar i en brevlåda samtidigt, som när de förberedde sig för ett möte. Anledningen till detta är önskemålet om datakonsistens: endast en klient åt gången kan komma åt data i en brevlåda och göra ändringar, varefter det är nästa klients tur - annars finns det risk för inkonsekvenser. Denna “seriella” åtkomst (dvs. den ena efter den andra) kan ta lång tid, särskilt med större datamängder (och många klienter som vill ha åtkomst samtidigt). Problemet är inte begränsat till grommunio, utan gäller i princip alla webb- och e-posttjänster: Om du vill ha konsekventa data måste du bearbeta åtkomsterna en efter en; om du vill ha hög prestanda måste du parallellisera åtkomsterna. Men det finns smarta lösningar som kan hjälpa till med detta dilemma. grommunio har implementerat en av dessa och därmed uppnått en stor prestandaökning.
Skriv- och skrivskyddade filer: seriellt eller parallellt?
Lösningen på problemet: Man skiljer mellan skriv- och skrivskyddad åtkomst. Skrivskyddad åtkomst (t.ex. en mailklient som uppdaterar en delad mapp) kan av servern tillåtas parallellt av flera klienter samtidigt, och även cachelagring är möjlig. En “single source of truth” krävs endast för skrivning, dvs. exklusiv åtkomst för en klient - annars kan inkonsekventa data uppstå eller en klient kan skriva över de ändringar som gjorts av en annan.
För att tekniskt kunna implementera detta krävs en viss förståelse för hur grommunio (eller någon annan e-post- och databasserver) fungerar. I grommunio finns en central MySQL-databas för metadata och cacher för användarens metadata, dvs. en stor tabell med all data, inklusive t.ex. innehållsförteckningen för information om användare och tilldelningen av var exakt en användares brevlåda kan hittas.
Det finns också en SQLite-databas för varje användare, som innehåller specifik användardata, inklusive alla e-postmeddelanden. För den enskilde användaren är det också den centrala komponenten i brevlådan, men den kan också vara en flaskhals om många förfrågningar kommer in samtidigt. Systemet är dock flexibelt och har visat sig fungera väl, det kan skalas efter behov och är en viktig del av grommunios höga prestanda i brevlådan.
Om en klient däremot gör en sökning i exempelvis en större brevlåda blockeras denna för andra förfrågningar tills sökningen är färdigbehandlad. På serversidan implementeras detta via en Mutex, andra klienter får vänta och i värsta fall stöta på en timeout - vilket innebär ett felmeddelande för användaren.
Ökad prestanda för brevlådan tack vare en hanteringsserver som fattar situationsanpassade beslut
Eftersom Mutex inte riktigt är meningsfullt för sökfrågor eller liknande skrivskyddade åtkomster, eftersom databasen inte ändras, har utvecklarna av grommunio implementerat en lösning som tar bort denna flaskhals. Utvecklarna har anpassat management server (exmdb) för detta ändamål. Den är komplex och har redan samordnat åtkomst med sina mer än 120 funktioner. För att införliva parallellisering för skrivskyddad åtkomst var utvecklarna tvungna att anpassa över 18 000 rader kod. Där tidigare en Mutex per brevlåda förhindrade konflikter men också ibland orsakade överbelastning, klarar sig det nya systemet utan en “stor” Mutex, istället inspekteras varje förfrågan och beslutas på situationsbasis om den kan parallelliseras på ett säkert sätt.
“Det här tillvägagångssättet visade sig vara betydligt snabbare, mer flexibelt och är märkbart för alla team som arbetar med delade brevlådor, särskilt i det dagliga arbetet. Ett typiskt exempel är den gemensamma förberedelsen av ett teammöte, där alla deltagare snabbt vill uppdatera varandra timmarna före mötet. Men det är bara ett exempel, användarna berättar entusiastiskt om andra situationer som nu har påskyndats avsevärt av förändringen. ”, säger Michael Kromer, CTO på grommunio.
Läs mer om andra grommunio features.