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

Sách trắng lag game › L11 Ổ đĩa

Ổ đĩa đầy Disk full

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

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

Khi log và dump tích tụ làm ổ đĩa đầy, thao tác ghi thất bại, và nếu không có phương án dự phòng thì server sập.

Vì sao Log, dump và file tạm tích tụ tới 100% → Dẫn đến Ghi thất bại. Không có xử lý lỗi thì crash, có thì lưu thất bại → Trên màn hình Mất kết nối, tiến độ chơi bị rollback

Triệu chứng
Mất kết nối, Nuốt thao tác·rollback
Yếu tố
Ngưng trệ
Ai gặp phải
Cả server
Khi nào
Càng chạy lâu càng nặng
Phụ trách
Phụ trách chính Hạ tầng server (Đội hạ tầng) · Phối hợp Hạ tầng DB (Đội hạ tầng), Phát triển server (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Xử lý lỗi ghi để thử lưu lại và phát cảnh báo thay vì crash, giảm log và dump không cần thiết.
Việc cần làm (Đội hạ tầng)
Thiết bị server·OS: log rotation, cảnh báo dung lượng, tách ổ đĩa log và ổ đĩa dữ liệu. Thiết bị DB: theo dõi để transaction log của DB (WAL, binlog) không bị tích tụ vì replication dừng hoặc thiếu bản sao lưu log.
Trên đồ thị
Tăng dần · Mức sử dụng dung lượng ổ đĩa
Chỗ cần xem
Xem mức sử dụng trong df -h và mức sử dụng inode trong df -i, tìm lỗi ENOSPC trong log của server và DB. Với DB, xem slot có active bằng false trong pg_replication_slots của PostgreSQL, số lượng và kích thước file trong SHOW BINARY LOGS của MySQL, log_reuse_wait_desc trong sys.databases của SQL Server, FreeStorageSpace của RDS
Đúng nếu
mức sử dụng tăng đều qua nhiều ngày, thời điểm chạm 100% trùng với lúc crash hoặc lưu thất bại, và log có ENOSPC
Loại trừ nếu
vẫn còn nhiều dung lượng mà ghi thất bại → nguyên nhân khác như quyền truy cập, giới hạn kích thước file
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)
Tìm hiểu thêm
Khi bản sao (replica) dừng hoặc bỏ sót sao lưu log, transaction log của DB (WAL, binlog, v.v.) không được xóa và cứ thế tích tụ. Nếu ổ đĩa này đầy, mọi thao tác ghi của DB dừng lại, việc lưu và giao dịch đồng loạt thất bại.

Nguồn

  1. write(2) — Linux manual page Linux man-pages
    Nếu thiết bị hết chỗ, thao tác ghi thất bại với lỗi ENOSPC
  2. Monitoring Disk Usage (PostgreSQL Documentation) PostgreSQL
    Ổ đĩa chứa WAL đầy thì server DB có thể panic và dừng
  3. Log-Shipping Standby Servers (PostgreSQL Documentation) PostgreSQL
    Replication slot không xóa WAL cho tới khi bản sao nhận được, nên có thể lấp đầy dung lượng pg_wal (giới hạn bằng max_slot_wal_keep_size)
  4. Troubleshoot a full transaction log (SQL Server Error 9002) Microsoft SQL Server
    Log đầy thì DB chỉ đọc được, không sửa được; nguyên nhân thường gặp chặn việc dọn log là thiếu bản sao lưu log, replication lag, transaction chạy lâu; xem cái gì đang chặn qua log_reuse_wait_desc trong sys.databases
  5. df(1) — Linux manual page coreutils
    Mức sử dụng theo từng file system, -i hiện mức sử dụng inode thay vì block
  6. pg_replication_slots (PostgreSQL Documentation) PostgreSQL
    active: slot có đang streaming không, wal_status: lượng WAL mà slot giữ lại đã vượt max_wal_size chưa
  7. SHOW BINARY LOGS Statement MySQL
    Danh sách file binary log của server và kích thước file (File_size)
  8. Amazon CloudWatch metrics for Amazon RDS AWS
    FreeStorageSpace: dung lượng lưu trữ còn trống của instance DB

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

Cùng tầng: L11 Ổ đĩa

Nguyên nhân ở tầng khác gây cùng triệu chứng (Mất kết nối)

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