한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Sách trắng lag game › L13 Kiến trúc và vận hành server

Quá tải log và giám sát Logging / monitoring overhead

ID nguyên nhân in-monitoring · Phụ trách chính Phát triển server (Đội phát triển game) · Phối hợp Hạ tầng server (Đội hạ tầng)

Mở thẻ gốc có hình minh họa và thí nghiệm →

Khi có sự cố, log tăng đột biến, và server gửi log theo kiểu đồng bộ lại càng chậm hơn vì chính log.

Vì sao Lỗi xảy ra làm lượng log và chỉ số gửi đi tăng đột biến → Dẫn đến Bộ thu thập log bị dồn việc, server gửi đồng bộ phải chờ → Trên màn hình Khi có sự cố, giật khựng và đứng hình càng nặng hơn vì log

Triệu chứng
Giật khựng, Đứng hình
Yếu tố
Ngưng trệ
Ai gặp phải
Cả server
Khi nào
Khi đông người, Thỉnh thoảng bất chợt
Phụ trách
Phụ trách chính Phát triển server (Đội phát triển game) · Phối hợp Hạ tầng server (Đội hạ tầng)
Việc cần làm (Đội phát triển game)
Gửi bất đồng bộ, lấy mẫu, bộ đệm đầy thì bỏ bớt, gộp các log cùng một lỗi rồi gửi một lần.
Việc cần làm (Đội hạ tầng)
Chuẩn bị dung lượng bộ thu thập log theo mức tăng đột biến khi có sự cố, cảnh báo khi bộ thu thập bị dồn việc.
Trên đồ thị
Thỉnh thoảng vọt lên bất chợt · Lượng log gửi đi, hàng đợi của bộ thu thập log
Chỗ cần xem
Số dòng log và số byte mỗi giây của server, hàng đợi và số bản ghi bị bỏ của agent thu thập log, xem cùng với thời gian tick. Nếu có thread bị dừng: dùng bcc offcputime -p để xem thread có đang chờ ghi hoặc gửi log không
Đúng nếu
lúc tick vọt lên, lượng log tăng vọt gấp vài chục lần bình thường, và thời gian chờ của thread game dồn vào call stack ghi hoặc gửi log
Loại trừ nếu
lượng log vẫn như bình thường hoặc thread game không chờ ở phía log → log tăng đột biến chỉ là hệ quả của sự cố, cần tìm riêng nguyên nhân gây ra lỗi đầu tiên
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)

Nguồn

  1. Logging in C# Microsoft
    Phương thức ghi log của .NET là đồng bộ, nên nếu nơi lưu chậm thì khuyến nghị ghi trước vào nơi lưu nhanh rồi chuyển sau, thay vì ghi thẳng vào đó
  2. Asynchronous loggers Apache Software Foundation
    Ghi log bất đồng bộ hấp thụ các đợt tăng ngắn bằng hàng đợi, nhưng nếu đầu ra chậm kéo dài thì hàng đợi đầy, rồi tốc độ tụt xuống bằng đầu ra chậm nhất hoặc log bị bỏ tùy theo chính sách (Discard)
  3. Demonstrations of offcputime, the Linux eBPF/bcc version IO Visor
    Cộng dồn thời gian thread bị dừng và rời CPU (off-CPU) theo từng call stack, -p để chỉ định tiến trình

Nguyên nhân nên xem cùng

Cùng tầng: L13 Kiến trúc và vận hành server

Nguyên nhân ở tầng khác gây cùng triệu chứng (Giật khựng)

Xem thẻ gốc có hình minh họa và thí nghiệm