Khi server sập, việc ghi vài GB bộ nhớ xuống ổ đĩa có thể làm việc khởi động lại chậm mất vài phút.
Vì sao Server crash, ghi toàn bộ bộ nhớ ra file → Dẫn đến Không thể khởi động lại trong lúc ghi vài GB → Trên màn hình Server sập làm mất kết nối, sau đó rất lâu vẫn không vào được
Phụ trách chính Hạ tầng server (Đội hạ tầng) · Phối hợp Phát triển server (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Cân nhắc dùng dump nhỏ chỉ chứa phần bộ nhớ cần thiết (minidump), sửa nguyên nhân crash.
Việc cần làm (Đội hạ tầng)
Giới hạn kích thước dump (cấu hình core dump của OS), ổ đĩa nhanh, tách việc khởi động lại khỏi việc dump (nén và tải dump lên được xử lý riêng sau khi đã khởi động lại).
Trên đồ thị
Rớt kết nối hàng loạt · Số kết nối, thời điểm khởi động lại server
Chỗ cần xem
Đặt cạnh nhau thời điểm crash, kích thước file core (coredumpctl list, info, hoặc file ở chỗ core_pattern trỏ tới), thời điểm ghi file xong, thời điểm dịch vụ chạy lại, và xem wkB/s của iostat -x trong khoảng đó
Đúng nếu
sau crash, trong lúc ghi file core vài GB, lượng ghi ổ đĩa bám sát giới hạn, và chỉ khi ghi xong thì việc khởi động lại mới bắt đầu
Loại trừ nếu
core dump đã tắt hoặc ghi xong nhanh vì nhỏ mà khởi động lại vẫn chậm → quá trình khởi động server như loading bản đồ hoặc cache lạnh của DB (db-cold-cache)
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)
Nguồn
core(5) — Linux manual pageLinux man-pages Giới hạn kích thước file core bằng RLIMIT_CORE, chọn vùng bộ nhớ cần ghi bằng coredump_filter, pipe core dump sang một chương trình để xử lý riêng
Minidump FilesMicrosoft Minidump chỉ chứa phần hữu ích của thông tin crash dump nên tạo nhanh và nhỏ
coredumpctl(1) — Linux manual pagesystemd list: danh sách core dump còn trong journal (TIME là thời điểm crash do kernel báo), info: chi tiết từng dump và kích thước đã ghi xuống ổ đĩa