2014-06-12 13 views
13

Chúng tôi đang gặp vấn đề với bảng EventQueue phát triển rất nhanh, lên đến 3k hồ sơ một giây và không bao giờ xóa hồ sơ (30 triệu ngay bây giờ). môi trường của chúng tôi đã sau đây thiết lập:Sitecore EventQueue Table phát triển ngoài tầm kiểm soát

Sitecore 7,2

  • 4 server CD và 1 máy chủ CM
  • Tất cả bốn máy chủ CD được cân bằng tải.
  • CD1 và CD2 được chỉ đến máy chủ DB1 CD3 và CD4 đang chỉ vào DB2
  • máy chủ có 2 mục tiêu xuất bản (một cho mỗi DB) Merge
  • Replication là thiết lập cho các db lõi trên tất cả các máy chủ (CM,)
  • EventQueue CD được kích hoạt

tôi có một vài câu hỏi vì vậy tôi sẽ phá vỡ chúng xuống thành các mục hàng riêng biệt.

  1. Khi xuất bản được cấp cho tất cả các máy chủ CD là nội dung cập nhật gửi trực tiếp từ db CM để đĩa CD db của (tất cả các bảng đúng) hoặc là nó gửi đến bảng EventQueue trong db CD và máy chủ CD có một công việc/nhiệm vụ nhìn vào bảng và cập nhật khi cần thiết.

  2. Tùy thuộc vào câu trả lời cho câu hỏi đầu tiên, nếu có 2 máy chủ CD trỏ đến cùng DB làm thế nào để họ biết nếu họ nên xử lý bảng EventQueue (sẽ không họ từng xử lý bàn và có những nỗ lực sao chép)

  3. Tại sao bảng EventTable không được xóa? Làm thế nào là xóa, khi nào nó được xóa?

Trả lời

15
  1. On CM xuất bản, yêu cầu xuất bản được gửi đến bảng EventQueue trên db CD, nơi nó được xử lý theo lịch trình xuất bản của ví dụ.
  2. Cột InstanceName trong bảng EventQueue lưu trữ tên duy nhất của mỗi cá thể Sitecore (theo mặc định đây là Tên Máy + Tên Instance IIS, nhưng có thể được đặt trong web.config). Điều này cho phép các sự kiện được chọn bởi một cá thể CD riêng lẻ trong môi trường cân bằng tải.
  3. Bảng EventQueue bị xóa bởi tác vụ Sitecore được xác định trong phần tử <scheduling> trong web.config, mặc dù tôi đã thấy lỗi này trong quá khứ.Theo mặc định, nó được thiết lập như sau:

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

Tôi đã từng chạy vào tải cao trên các bảng EventQueue và PublishQueue và muốn giới thiệu cố gắng sau (một số trong đó đã được đề xuất từ ​​hỗ trợ Sitecore):

  • Giảm khoảng thời gian của CleanupEventQueue đại lý (ở trên)
  • Giảm các thiết lập DaysToKeep trên CleanupEventQueue (còn CleanupPublishQueue sẽ không làm tổn thương)
  • Tạo một công việc SQL theo lịch trình để chạy các kịch bản sạch lên được nêu trong CMS Tuning Hướng dẫn (Trang 10: http://sdn.sitecore.net/upload/sitecore7/70/cms_tuning_guide_sc70-usletter.pdf)

Cuối cùng, từ hỗ trợ Sitecore:

Sitecore khuyến cáo rằng số lượng hàng (mục) trong bảng History, PublishQueue, và EventQueue sẽ ít hơn so với 1000.

+1

Đây là giải thích rất nhiều, cảm ơn. Một điều tôi vẫn không hiểu là nếu có 2 máy chủ CD trỏ đến một DB và xuất bản xảy ra, sẽ có và nhập vào bảng EventQueue cho mỗi máy chủ CD chỉ khác nhau bởi trường InstanceName? Nếu đó là trường hợp, wont cả hai xử lý cùng một dữ liệu (mà sẽ được lặp lại) khi cả hai đều có một mục hành động trong bảng? – mluker

+0

Xin lỗi - Tôi đã chỉnh sửa câu trả lời của mình. Yêu cầu xuất bản được gửi đến bảng EventQueue trên đĩa CD, với các chi tiết của mục/s để xuất bản và xuất bản loại, chứ không phải nội dung mục. Nhưng có, mỗi cá thể có hàng riêng trong bảng IIRC. – computerjules

+3

Cảm ơn câu trả lời này. Các gripe tôi có với bảng EventQueue là nó có thể điền vào một * LOT * nếu bạn có kịch bản chạy trên một lịch trình để tạo/cập nhật nội dung. Các đại lý dọn dẹp có một thiết lập "daystokeep" với mức độ chi tiết tốt nhất là một ngày duy nhất. Có thể có ~ 100 nghìn bản ghi được thêm vào trong một ngày. Bạn có thể chỉ định cài đặt 'TimeToKeep' thành phút. – theyetiman

Các vấn đề liên quan