Přeskočit na obsah
News

grommunio zlepšuje výkon poštovních schránek

· podle grommunio
grommunio zlepšuje výkon poštovních schránek

Je již součástí komunitní verze a brzy bude přibalena a dostupná všem zákazníkům grommunio: Díky změně způsobu, jakým grommunio zpracovává databáze e-mailových schránek, budou týmy těžit z výrazně vyššího výkonu schránek.

Problém je složitý, ale rozšířený: V minulosti se mohlo stát, že uživatelé zažili delší čekací dobu, když k jednotlivým schránkám přistupovalo mnoho klientů najednou, například když několik uživatelů současně provádělo delší vyhledávací dotazy v jedné schránce, například při přípravě na schůzku. Důvodem je snaha o konzistenci dat: k datům ve schránce smí v daném okamžiku přistupovat a provádět změny pouze jeden klient, poté je na řadě další klient - jinak hrozí riziko nekonzistence. Tento “sériový” přístup (tj. jeden po druhém) by mohl trvat dlouho, zejména u větších souborů dat (a mnoha klientů, kteří chtějí přistupovat současně). Problém se neomezuje pouze na grommunio, ale týká se v zásadě všech webových a poštovních služeb: Pokud chcete konzistentní data, musíte zpracovávat přístupy jeden po druhém; pokud chcete vysoký výkon, musíte přístupy paralelizovat. Existují však chytrá řešení, která mohou s tímto dilematem pomoci. grommunio implementovalo jedno z nich a dosáhlo tak výrazného zvýšení výkonu.

Zápis a čtení: sériově, nebo paralelně?

Řešení problému: Rozlišuje se přístup pouze pro zápis a pouze pro čtení. Přístup pouze pro čtení (např. poštovní klient aktualizující sdílenou složku) může server povolit paralelně několika klientům současně a je možné také ukládání do mezipaměti. “Jeden zdroj pravdy” je vyžadován pouze pro zápis, tj. výhradní přístup jednoho klienta - jinak může dojít k nekonzistentním datům nebo k přepsání změn provedených jiným klientem.

Technická implementace vyžaduje určité znalosti o tom, jak funguje grommunio (nebo jakýkoli jiný poštovní a databázový server). V grommunio existuje centrální databáze MySQL pro metadata a cache pro metadata uživatelů, tj. velká tabulka se všemi údaji, včetně např. obsahu pro informace o uživatelích a přiřazení, kde přesně lze najít schránku uživatele.

Pro každého uživatele existuje také databáze SQLite, která obsahuje konkrétní údaje o uživateli, včetně všech e-mailů. Pro jednotlivé uživatele je to také ústřední součást poštovní schránky, ale může být také úzkým hrdlem, pokud přijde mnoho požadavků najednou. Přesto je systém flexibilní a osvědčil se, lze jej podle potřeby škálovat a je důležitou součástí vysokého výkonu schránky grommunio.

Pokud však klient provádí například vyhledávání ve větší schránce, je tato blokována pro další požadavky, dokud není požadavek na vyhledávání plně zpracován. Na straně serveru je to realizováno prostřednictvím Mutex, ostatní klienti musí čekat a v nejhorším případě narazí na timeout - což pro uživatele znamená chybové hlášení.

Mailbox access flow - typický server

Problém s mutexem typického serveru exmdb: Vlákno 1 uzamkne mutex a pracuje se sdíleným prostředkem, zatímco vlákno 2 je blokováno mutexem a musí čekat.

Zvýšení výkonu poštovní schránky díky serveru pro správu, který rozhoduje podle situace

Protože mutex nemá smysl pro vyhledávací dotazy nebo podobné přístupy pouze pro čtení, protože databáze se nemění, implementovali vývojáři grommunio řešení, které toto úzké místo odstraňuje. Vývojáři pro tento účel upravili server pro správu (exmdb). Je komplexní a má již zkoordinovaný přístup se svými více než 120 funkcemi. Pro začlenění paralelizace pro přístup pouze pro čtení museli vývojáři upravit více než 18 000 řádků kódu. Tam, kde dříve jeden mutex na schránku zabraňoval konfliktům, ale také občas způsoboval přetížení, se nový systém obejde bez “velkého” mutexu, místo toho kontroluje každý požadavek a situačně rozhoduje, zda jej lze bezpečně paralelizovat.

Mailbox access flow - adaptovaný server

Vylepšení pomocí upraveného serveru exmdb: Vlákna 1 a 2 dostávají rychlejší odezvu od sdíleného prostředku.

“Tento přístup se ukázal jako výrazně rychlejší, flexibilnější a je znatelný pro každý tým, který pracuje se sdílenými poštovními schránkami, zejména při každodenní práci. Typickým příkladem je společná příprava týmové schůzky, kdy se všichni účastníci chtějí v hodinách před schůzkou rychle vzájemně informovat. Ale to je jen jeden příklad, uživatelé nám nadšeně vyprávějí o dalších situacích, které se nyní díky změně výrazně urychlily. ”, říká technický ředitel společnosti grommunio Michael Kromer.

Seznamte se s dalšími funkcemi grommunio.