2014-06-12 23 views
13

Mamy problem z tablicą EventQueue, która rośnie bardzo szybko, do 3 tys. Rekordów na sekundę i nigdy nie kasuje rekordów (obecnie 30 milionów). Nasze środowisko ma następujące skonfigurować:Tabela wydań Sitecore Eventout niekontrolowany

Sitecore 7.2

  • 4 serwery CD i 1 serwera CM
  • Wszystkie cztery serwery CD są obciążenia zrównoważone.
  • CD1 i CD2 są skierowane do serwera DB1 CD3 i CD4 są skierowane do DB2
  • serwer Istnieją 2 cele wydawnicze (jeden dla każdego DB) połączenie
  • Replikacja jest ustawiony na db podstawowej we wszystkich serwerach (CM,)
  • EventQueue CD jest włączona

mam kilka pytań więc złamię je na odrębne pozycje.

  1. Kiedy publikować wydawane jest dla wszystkich serwerów CD jest aktualizowana zawartość wysyłane bezpośrednio z db cm do db CD (wszystkie poprawnych tabel) lub zostanie on wysłany do stołu EventQueue w db CD i serwer CD ma zadanie/zadanie, które w razie potrzeby sprawdza tabelę i aktualizacje.

  2. W zależności od odpowiedzi na pierwsze pytanie, czy są 2 serwery CD wskazując tym samym DB skąd wiedzą, czy powinny one przetwarzać tabelę EventQueue (przyzwyczajenie każdy z nich przetwarza tabelę i być powielania wysiłków)

  3. Dlaczego tabela EventTable nie jest wyczyszczona? Jak jest wyczyszczone, kiedy jest wyczyszczone?

Odpowiedz

15
  1. W CM publikują, wniosek jest wysyłany do publikowania tabeli EventQueue na db CD, gdzie są przetwarzane zgodnie z harmonogramem publikowania instancji.
  2. Kolumna InstanceName w tabeli EventQueue przechowuje unikalną nazwę każdej instancji Sitecore (domyślnie jest to nazwa komputera + nazwa instancji IIS, ale można ją ustawić w pliku web.config). Umożliwia to przechwytywanie zdarzeń przez pojedynczą instancję CD w środowisku równoważenia obciążenia.
  3. Tabela EventQueue jest czyszczona przez zadanie Sitecore zdefiniowane w elemencie <scheduling> w pliku web.config, chociaż widziałem to złe zachowanie w przeszłości.Domyślnie jest on ustawiony w następujący sposób:

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

mam poprzednio napotkasz wysokich obciążeń na stołach EventQueue i PublishQueue i polecam spróbować następujących (z których niektóre zostały zaproponowane ze wsparcia Sitecore)

Wreszcie z Sitecore wsparcia:

Sitecore zaleca, aby liczba wierszy (wpisów) w tabelach Historia, PublishQueue i EventQueue była mniejsza niż 1000.

+1

To wyjaśnia bardzo, dziękuję. Jedną z rzeczy, których nadal nie rozumiem, jest to, czy istnieją 2 serwery CD wskazujące na jeden DB i czy występuje publikacja, czy w tabeli EventQueue będzie i będzie miejsce dla każdego serwera CD różniącego się tylko polem Nazwa instancji? Jeśli tak jest, to czy obydwa będą przetwarzać te same dane (które byłyby duplikowane), ponieważ oba mają element akcji w tabeli? – mluker

+0

Przepraszamy - zredagowałem swoją odpowiedź. Żądanie publikowania jest wysyłane do tabeli EventQueue na dysku CD, z określeniem elementów do opublikowania i opublikowania, a nie samej treści przedmiotu. Ale tak, każda instancja otrzymuje swój własny wiersz w tabeli IIRC. – computerjules

+3

Dziękuję za tę odpowiedź. Zarzut z tabeli EventQueue polega na tym, że może wypełnić * LOT *, jeśli posiadasz skrypty uruchamiane według harmonogramu w celu tworzenia/aktualizowania zawartości. Agent czyszczenia ma ustawienie "jednodniowe" z najlepszym poziomem szczegółowości jako jeden dzień. W ciągu dnia może być dodanych ~ 100 tys. Rekordów. Powinieneś być w stanie określić ustawienie 'TimeToKeep' na minuty. – theyetiman