MailStore è un prodotto estremamente versatile, in grado di funzionare con la maggior parte delle piattaforme di posta rispondendo alla quasi totalità delle esigenze che l'utenza esprime. Tuttavia è possibile che in qualche caso particolare, come un mail server di grandi dimensioni che deve gestire job multipli o grandi quantità di account di posta, ci si trovi a toccare i limiti del proprio hardware o della banda disponibile.

Ottimizzare non è difficile e si riduce in buona parte a capire quanto velocemente e quanto spesso occorra aggiungere la nuova posta all'archivio. La tentazione al momento della prima installazione è quella di adottare un approccio del tipo il più rapidamente possibile, quando in realtà questo significherebbe rischiare di tirare inutilmente il collo alle risorse sottostanti.

In questo post riassumo alcuni semplici suggerimenti grazie ai quali potrai ottimizzare la tua installazione di MailStore in base alle tue esigenze di business effettive.
 

1. Usa il job monitor

Il modo migliore per capire quel che succede all'interno di MailStore è quello di controllare la frequenza dei job, il tempo richiesto da ciascuno di essi e, in particolare, la presenza di eventuali sovrapposizioni.

A questo scopo esiste il job monitor, a cui occorre fare continuamente riferimento man mano che si applicano nuove regolazioni al sistema.
 

Un altro modo per verificare il carico è, ovviamente, quello di usare Windows Task Manager, che permette di conoscere il livello di utilizzo sia della memoria che della CPU associato al processo MailStoreServer.exe / MailStoreServer_x64.exe.

Sui server più impegnati dove girano molteplici thread (vedi il paragrafo thread più avanti), il consumo della memoria può crescere significativamente senza che ce ne si accorga: in questo caso occorre ridurre il numero dei thread simultanei.
 
 

 

2. Non sovrautilizzare la modalità automatica

La modalità automatica è stata introdotta nella versione 9 di MailStore: essenzialmente manda in esecuzione un job, attende per un intervallo di 5 minuti (variabile a piacere), lo rilancia nuovamente e così via senza sosta.

Se il completamento del job richiede solo pochi secondi, allora quel che succede è che ogni 5 minuti viene ripetuta l'esecuzione di un'attività di piccola portata.
Al contrario, se il job richiede la sincronizzazione di un gran numero di mailbox utente, il tempo necessario potrebbe essere anche di 15 minuti, cui seguirebbero solo 5 minuti di pausa prima di riprendere da capo: questo comporterebbe un livello discretamente alto di utilizzo del server per il 75% del tempo.

Un server impegnato per tre quarti della giornata è una situazione non certo ideale. Potresti aumentare l'intervallo di attesa, ma prima o poi ti troveresti comunque a dover ricorrere alla schedulazione dei job come spiegheremo in seguito.

Una nota finale: tutti i job automatici vengono lanciati all'avvio del servizio MailStore. Questo significa che eseguendo il reboot della macchina o anche solo l'avviamento del servizio si verifica il massimo carico possibile sul server, sulla rete e sulle altre risorse, il che può diventare una questione significativa nel caso di deployment di grandi dimensioni.


3. Perché non ricorrere alla schedulazione dei job?

La funzione di job scheduler presente all'interno di MailStore viene spesso sottovalutata perché normalmente non effettua le archiviazioni con una frequenza altrettanto elevata rispetto a quella resa possibile dalla modalità automatica. Ma è un'alternativa che dovrebbe essere tenuta in considerazione quando il completamento di un job richieda più di 15 minuti.

In fondo questa non è altro che una decisione di business relativa alla velocità con cui si desidera disporre della posta all'interno dell'archivio. I messaggi si trovano pur sempre nella mailbox, ovviamente, quindi se puoi sopportare l'idea che un nuovo messaggio possa essere ricercabile all'interno dell'archivio dopo mezz'ora o un'ora anziché immediatamente potrai evitare un sacco di carico sul tuo server.

Con la schedulazione dei job non devi far altro che scegliere di mandarli in esecuzione con la frequenza che preferisci: ogni X minuti, giorni, settimane o mesi.
 

Qualunque sia il job che configuri, il mio consiglio è quello di assegnargli un nome chiaro in modo tale che si possa immediatamente capire se si tratta di un job automatico, manuale o schedulato.


4. Usa la giusta quantità di "thread"

Nella mia esperienza, quando si assiste a un rallentamento di un server MailStore è solitamente in conseguenza di un numero eccessivo di thread in corso.
Questo è particolarmente vero quando si sta utilizzando un job a mailbox multiple, uno nel quale è possibile accedere simultaneamente a più caselle mailbox del server. Il default per questo genere di job è di 5 thread, ma se vi sono multipli job che si connettono a multiple mailbox si finisce ben presto ad avere numerosi job sovrapposti che consumano molti più thread.
Ciascun thread riserva un proprio spazio di memoria, per cui se dovessi notare che il tuo processo MailStore Server sta consumando una quantità enorme di memoria è molto probabile che la colpa sia dell'eccessivo numero di thread contemporaneamente attivi.
 

Durante i nostri test non abbiamo riscontrato grandi differenze nel throughput complessivo di archiviazione riducendo il numero dei thread, pertanto un altro consiglio è quello di ridurre i job a uno o due thread.
La conseguenza è che un job incaricato di archiviare solamente una mailbox per volta può spesso risultare più performante e incorrere in un minor rischio di timeout.
 
Se il tuo server MailStore è spezzo carico e "sotto sforzo", prova ad applicare qualcuno di questi suggerimenti e fammi sapere se la situazione migliora.

Tratto dal blog Zen Software 

 


Condividi sui Social Network