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ů:

  1. Získání automatizačního stavu uživatele z Analytics DB
  2. Získání uživatele
  3. Vygenerování zprávy pro konkrétního uživatele
  4. 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í:

  1. Nahrání uživatele z DB
  2. Shromáždění souborů pro sestavení zprávy
  3. Sestavení emailové zprávy
  4. 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:

  1. NumberThreads – počet souběžných vláken využitých k odesílání emailů
  2. 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;amp;lt;!--The maximum number of concurrent SMTP connections allowed to open--&amp;amp;amp;gt;
&amp;amp;amp;lt;setting name=&amp;amp;amp;quot;SMTP.MaxConnections&amp;amp;amp;quot; value=&amp;amp;amp;quot;100&amp;amp;amp;quot; /&amp;amp;amp;gt;

&amp;amp;amp;lt;!--The number of threads that you can use for sending messages--&amp;amp;amp;gt;
&amp;amp;amp;lt;setting name=&amp;amp;amp;quot;NumberThreads&amp;amp;amp;quot; value=&amp;amp;amp;quot;100&amp;amp;amp;quot; /&amp;amp;amp;gt;

&amp;amp;amp;lt;!--Specifies how many sending threads can generate messages at the same time. Default value: Environment.ProcessorCount * 2--&amp;amp;amp;gt;
&amp;amp;amp;lt;setting name=&amp;amp;amp;quot;MaxGenerationThreads&amp;amp;amp;quot; value=&amp;amp;amp;quot;&amp;amp;amp;quot; /&amp;amp;amp;gt;

&amp;amp;amp;lt;!--The number of recipients in each batch enqueued in the dispatch queue.--&amp;amp;amp;gt;
&amp;amp;amp;lt;setting name=&amp;amp;amp;quot;DispatchEnqueueBatchSize&amp;amp;amp;quot; value=&amp;amp;amp;quot;300&amp;amp;amp;quot; /&amp;amp;amp;gt;

&amp;amp;amp;lt;!--The number of threads that adds recipient batches to dispatch queue.--&amp;amp;amp;gt;
&amp;amp;amp;lt;setting name=&amp;amp;amp;quot;DispatchEnqueueThreadsNumber&amp;amp;amp;quot; value=&amp;amp;amp;quot;2&amp;amp;amp;quot; /&amp;amp;amp;gt;

&amp;amp;amp;lt;!--The amount of time to wait between sending messages (ms)--&amp;amp;amp;gt;
&amp;amp;amp;lt;setting name=&amp;amp;amp;quot;Sleep&amp;amp;amp;quot; value=&amp;amp;amp;quot;0&amp;amp;amp;quot; /&amp;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:

ECM Performance measurement tool

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.