HỒ SƠ 05 • ĐỊNH CỠ VÒNG LẶP OPLOG & CHANGE STREAMS

Hồ Sơ MongoShard: Định Cỡ MongoDB 8.0 Oplog & Change Streams Cho Rocket.Chat & Graylog

Mã Hồ Sơ
ROCKETCHAT-OPLOG
Quy Tắc Bộ Đệm
Change Streams + Oplog
Kiểm Soát Trang Bẩn
Online replSetResizeOplog
Chuẩn Nén & Đĩa
Dedicated VDS Threads • TTL Ephemeral Prune

Trong tài liệu định cỡ Change Streams của MongoShard, chúng tôi phân tích nguyên nhân hệ thống Rocket.Chat bị khựng khi đợt tin nhắn Webhook làm tràn local.oplog.rs — cùng lệnh mở rộng Oplog nóng không cần khởi động lại mongod.

Mô Hình Nghẽn Cổ Chai Trên MongoShard: Quét Con Trỏ Change Streams & Tràn Đuôi Oplog

Các nền tảng nhắn tin thời gian thực như Rocket.Chat khởi chạy nhiều container xử lý trạng thái online và WebSocket cùng bám sát luồng MongoDB Change Streams. Nếu bảng vòng lặp local.oplog.rs chỉ đủ lưu vài giờ ghi dữ liệu khi Bot/Webhook bắn tin hàng loạt, con trỏ đọc sẽ mất dấu resume token buộc hệ thống quét lại dữ liệu gây quá tải CPU.

Sơ đồ cửa sổ lưu trữ vòng lặp local.oplog.rs NVMe và cắt lát sao lưu 10 phút Percona PBM S3 trên MongoShard (rocketchat-mongodb-oplog)
Hình 3 — Phương trình cửa sổ Oplog trên MongoShard: Định cỡ local.oplog.rs đủ 48–72 giờ giúp tránh đứt gãy đồng bộ và nuôi luồng cắt lát PITR 10 phút lên S3.

Lệnh Tăng Nóng replSetResizeOplog & Chuỗi Kết Nối Chuẩn Từ MongoShard

Cấu hình mẫu MongoShard cho hồ sơ rocketchat-mongodb-oplog — kiểm tra lại thông số RAM trước khi khởi động mongod.

// 1. Tăng nóng dung lượng Oplog MongoDB 8.0 lên 40 GB (40960 MB) không cần restart
db.adminCommand({ replSetResizeOplog: 1, size: Double(40960), minRetentionHours: 48 })

// 2. Kiểm tra dung lượng Oplog và số giờ lưu trữ thực tế
rs.printReplicationInfo()

# 3. Chuỗi kết nối cụm Replica Set cho Rocket.Chat Production
MONGO_URL="mongodb://rc_app:PASS@10.24.0.11:27017,10.24.0.12:27017,10.24.0.13:27017/rocketchat?replicaSet=rs0-prod&readPreference=primaryPreferred&w=majority"
MONGO_OPLOG_URL="mongodb://rc_oplog:PASS@10.24.0.11:27017,10.24.0.12:27017,10.24.0.13:27017/local?replicaSet=rs0-prod&authSource=admin"

Bảng Quy Chiếu Bậc RAM & Hạ Tầng MongoShard Cho HỒ SƠ 05 • ĐỊNH CỠ VÒNG LẶP OPLOG & CHANGE STREAMS (2026-11-12)

Các mốc cấu hình dưới đây được tính toán xác định theo công thức (RAM − 1 GB) × 0.50 của MongoShard và tham chiếu biểu phí công khai ngày 2026-11-12 từ UltaHost (https://ultahost.com/vps-hosting) cùng Vultr (https://www.vultr.com/pricing/).

Quy Mô Cụm / Bậc Máy Chủ WiredTiger Cache Dung Lượng Đáp Ứng Cấu Hình Tham Chiếu (2026-11-12)
Nhóm Doanh Nghiệp (~500 tài khoản) 7.5 GB WT Cache (Node 16GB) 20 GB Oplog (1-Node rs0 / P-S-A) Hostinger KVM 4 ($10.49/tháng promo)
Tổ Chức Lớn (~2.500 tài khoản) 15.5 GB WT Cache (Node 32GB) 50 GB Oplog (3-Node P-S-S) UltaHost VDS 32GB ($58/tháng/node)
Đa Kênh Chat + Cấu Hình Graylog 31.5 GB WT Cache (Node 64GB) 120 GB Oplog + VDS nhân riêng UltaHost VDS 64GB hoặc Vultr VPC

Danh Sách Kiểm Tra Triển Khai Sản Xuất MongoShard (ROCKETCHAT-OPLOG)

  1. Luôn khởi tạo chế độ Replica Set (kể cả trên 1 máy chủ đơn) vì Rocket.Chat và các luồng Change Streams bắt buộc đọc từ local.oplog.rs.
  2. Sử dụng lệnh replSetResizeOplog trực tuyến để duy trì cửa sổ lưu trữ tối thiểu 48–72 giờ cao hơn mức đỉnh của Bot/Webhook.
  3. Tạo TTL Index tự động dọn dẹp bảng lịch sử phiên đăng nhập và nhật ký thông báo tạm nhằm giữ gọn bộ đệm WiredTiger.
  4. Tách riêng máy chủ chạy OpenSearch JVM của Graylog để không chiếm đoạt vùng nhớ OS Page Cache của tiến trình mongod.

Xem Gói UltaHost Cho Hồ Sơ ROCKETCHAT-OPLOG Trên MongoShard ↗ Đối Chiếu Thêm Vultr Cho ROCKETCHAT-OPLOG Trên MongoShard ↗ Nạp Cấu Hình Này Vào Bộ Tính MongoShard →

Câu Hỏi Kỹ Thuật MongoShard: HỒ SƠ 05 • ĐỊNH CỠ VÒNG LẶP OPLOG & CHANGE STREAMS

Áp dụng khuyến nghị tăng Oplog của MongoShard trên cụm Rocket.Chat đang chạy có gây ngắt kết nối không?

Hoàn toàn không. Trên MongoDB 8.0, lệnh quản trị db.adminCommand({ replSetResizeOplog: 1, size: Double(MB) }) điều chỉnh kích thước Oplog trực tuyến ngay lập tức mà không cần khởi động lại dịch vụ.

Vì sao MongoShard khuyên tách rời máy chủ OpenSearch của Graylog khỏi MongoDB WiredTiger?

OpenSearch chiếm cứng tới 31 GB JVM Heap và hút mạnh Linux Page Cache cho các phân đoạn Lucene. Chạy chung hai dịch vụ không khóa giới hạn RAM sẽ bóp nghẹt bộ đệm WiredTiger.