2014-06-12 22 views
13

Abbiamo riscontrato un problema con la tabella EventQueue che cresce molto velocemente a volte, fino a 3k di record al secondo e mai record di cancellazione (30 milioni a partire da ora). Il nostro ambiente è il seguente set up:Sitecore EventQueue Una tabella fuori controllo

Sitecore 7,2

  • 4 server CD e 1 server CM
  • Tutti e quattro i server CD sono carico bilanciato.
  • CD1 e CD2 sono puntati al server DB1 CD3 e CD4 sono indicate a DB2
  • del server Ci sono 2 obiettivi editoriali (uno per ogni DB) Merge
  • replica è configurato per il db Nucleo tutti i server (CM,)
  • EventQueue del CD è attivata

ho alcune domande così vi suddividerle in voci separate.

  1. Quando una pubblicare è rilasciata per tutti i server CD è il contenuto aggiornato inviato direttamente dal db CM al db CD (tutte le tabelle corrette) o è inviato al tavolo EventQueue nel db CD il server CD ha un lavoro/attività che controlla la tabella e aggiorna secondo necessità.

  2. A seconda risposta alla prima domanda, se ci sono 2 server CD che puntano allo stesso DB come fanno a sapere se devono elaborare il tavolo EventQueue (solito ognuno di essi elaborano il tavolo ed essere duplicare gli sforzi)

  3. Perché la tabella EventTable non è stata cancellata? Come viene cancellato, quando viene cancellato?

risposta

15
  1. On CM pubblicare, la richiesta di pubblicare viene inviato al tavolo EventQueue sul db CD in cui esso viene elaborato come da programma la pubblicazione dell'istanza.
  2. La colonna InstanceName nella tabella EventQueue memorizza il nome univoco di ciascuna istanza Sitecore (per impostazione predefinita questo è Nome macchina + Nome istanza IIS, ma può essere impostato in web.config). Ciò consente di raccogliere gli eventi da una singola istanza CD in un ambiente con bilanciamento del carico.
  3. La tabella EventQueue viene cancellata da un'attività Sitecore definita nell'elemento <scheduling> in web.config, anche se ho visto questo comportamento anomalo nel passato.Per impostazione predefinita, è impostato come segue:

    <agent type="Sitecore.Tasks.CleanupEventQueue, Sitecore.Kernel" method="Run" interval="04:00:00"> <DaysToKeep>1</DaysToKeep> </agent>

Ho già incorrere in elevati carichi sui tavoli EventQueue e PublishQueue e consiglio di provare la seguente (alcune delle quali sono state suggerite dal sostegno Sitecore):

Infine, dal sostegno Sitecore:

Sitecore raccomanda che il numero di righe (voci) nelle tabelle History, PublishQueue ed EventQueue sia inferiore a 1000.

+1

Questo è molto, grazie. Una cosa che ancora non capisco è se ci sono 2 server CD che puntano a un DB e si verifica una pubblicazione, ci sarà e la voce nella tabella EventQueue per ciascun server CD differisce solo dal campo InstanceName? Se questo è il caso, non entrambi elaboreranno gli stessi dati (che sarebbero duplicati) poiché entrambi hanno un elemento azione nella tabella? – mluker

+0

Mi spiace - Ho modificato la mia risposta. La richiesta di pubblicazione viene inviata alla tabella EventQueue su CD, con i dettagli degli articoli da pubblicare e pubblicare il tipo, non il contenuto dell'articolo stesso. Ma sì, ogni istanza ottiene la propria riga nella tabella IIRC. – computerjules

+3

Grazie per questa risposta. Il guaio che ho con la tabella EventQueue è che può riempire un * LOT * se si dispone di script eseguiti su una pianificazione per creare/aggiornare il contenuto. L'agente di pulizia ha un'impostazione "daystokeep" con il livello di granularità più fine di un singolo giorno. Ci potrebbero essere ~ 100k record aggiunti in un giorno. Dovresti essere in grado di specificare un'impostazione di "TimeToKeep" su minuti. – theyetiman