Při rozesílání většího množství emailů pomocí integrovaného nástroje Email Experience Manager se můžeme setkat se situací, kdy rozesílka trvá nezvykle dlouho. V tomto článku si ukážeme, jakým způsobem lze zjistit aktuální zatížení serveru právě probíhající rozesílkou emailingu, jak rychle probíhá generování jednotlivých e-mailů a jejich odeslání a jaké jsou hodnoty v konfiguračním souboru pro EXM, pomocí kterých lze zvýšit výkon.
Proces vytvoření a odeslání emailu v rámci hromadné rozesílky pomocí EXM lze zjednodušeně složit z těchto kroků:
- Získání automatizačního stavu uživatele z Analytics DB
- Získání uživatele
- Vygenerování zprávy pro konkrétního uživatele
- Odeslání vygenerované zprávy
Rychlost získávání automatizačních stavů pro jednotlivé uživatele se nejčastěji pohybuje v stovkách tisíc za sekundu. Tohle číslo nejspíš nebudete muset nikdy řešit.
Rychlost získávání uživatelů, resp. jejich emailů se zpravidla pohybuje v řádu jednotek nebo desítek získaných záznamů za sekundu. Opět hodnota, která pravděpodobně nebude kamenem úrazu při investigaci pomalého rozesílání emailů.
Zaměřme se na čas potřebný k vygenerování emailové zprávy pro každého uživatele a čas potřebný k odeslání zprávy.
Generování zpráv se dá opět rozdělit do několika dílčích částí:
- Nahrání uživatele z DB
- Shromáždění souborů pro sestavení zprávy
- Sestavení emailové zprávy
- Sestavení MIME hlavičky
Další významnou hodnotou je počet souběžně generovaných zpráv. Pokud je počet souběžně generovaných zpráv za sekundu nízký (v jednotkách kusů), pak zkuste zvýšit v kofiguračním souboru Sitecore.EmailCampaign.config hodnotu MaxGenerationThreads. Pro vytížení procesoru během rozesílky na 50% (což je bezpečná hodnota, která neohrozí výkon ostatních aplikací) by měla být hodnota nastavena jako dvojnásobek počtu jader procesorů.
Doba potřebná pro odeslání zprávy se odvíjí od dvou parametrů v konfiguračním souboru:
- NumberThreads – počet souběžných vláken využitých k odesílání emailů
- SMTP.MaxConnections – počet souběžných spojení se SMTP serverem
Při změnách hodnot v konfiguraci se doporučuje dodržovat tyto závislosti:
- Hodnota MaxGenerationThreads by měla nabývat hodnot poloviny jader CPU nebo celkového počtu jader CPU nebo dvojnásobku jader CPU
- Hodnota NumberThreads by měla být stejná nebo větší než MaxGenerationThreads
- Hodnota SMTP.MaxConnections by měla být stejná nebo větší než NumberThread
Závislost mezi konfiguračními hodnotami je tedy podle tohoto vzorce:
1⁄2 CPU cores <= MaxGenerationThreads <= NumberThreads <= SMTP.MaxConnections
&amp;amp;lt;!--The maximum number of concurrent SMTP connections allowed to open--&amp;amp;gt; &amp;amp;lt;setting name=&amp;amp;quot;SMTP.MaxConnections&amp;amp;quot; value=&amp;amp;quot;100&amp;amp;quot; /&amp;amp;gt; &amp;amp;lt;!--The number of threads that you can use for sending messages--&amp;amp;gt; &amp;amp;lt;setting name=&amp;amp;quot;NumberThreads&amp;amp;quot; value=&amp;amp;quot;100&amp;amp;quot; /&amp;amp;gt; &amp;amp;lt;!--Specifies how many sending threads can generate messages at the same time. Default value: Environment.ProcessorCount * 2--&amp;amp;gt; &amp;amp;lt;setting name=&amp;amp;quot;MaxGenerationThreads&amp;amp;quot; value=&amp;amp;quot;&amp;amp;quot; /&amp;amp;gt; &amp;amp;lt;!--The number of recipients in each batch enqueued in the dispatch queue.--&amp;amp;gt; &amp;amp;lt;setting name=&amp;amp;quot;DispatchEnqueueBatchSize&amp;amp;quot; value=&amp;amp;quot;300&amp;amp;quot; /&amp;amp;gt; &amp;amp;lt;!--The number of threads that adds recipient batches to dispatch queue.--&amp;amp;gt; &amp;amp;lt;setting name=&amp;amp;quot;DispatchEnqueueThreadsNumber&amp;amp;quot; value=&amp;amp;quot;2&amp;amp;quot; /&amp;amp;gt; &amp;amp;lt;!--The amount of time to wait between sending messages (ms)--&amp;amp;gt; &amp;amp;lt;setting name=&amp;amp;quot;Sleep&amp;amp;quot; value=&amp;amp;quot;0&amp;amp;quot; /&amp;amp;gt;
Pro sledování výše popsaných hodnot během rozesílání emailingu dobře poslouží nástroj EXM Performace Measurement Tool, který běží na této adrese:
http://hostname/sitecore/admin/dispatchsummary.aspx
Přehled, který běží na uvedené adrese vypadá takto:
Prostředí EXM Performance Measurement Tool se neobnovuje automaticky. Pro aktuální data je potřeba vždy udělat ruční refresh stránky.