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

Sách trắng lag game › L7 OS server (kernel)

Bảng conntrack của server bị đầy conntrack table full

ID nguyên nhân so-conntrack · 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), Phát triển client (Đội phát triển game)

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

Khi bảng theo dõi kết nối (conntrack), nơi tường lửa Linux ghi lại mọi kết nối, chạm giới hạn, gói tin mới sẽ bị bỏ.

Vì sao Kết nối dồn dập và kết nối ngắn lặp lại liên tục làm số mục kết nối tăng → Dẫn đến Bảng đầy, kết nối mới và một phần gói tin bị bỏ → Trên màn hình Không vào được, dịch chuyển tức thời do mất gói không rõ lý do

Triệu chứng
Không vào được·kẹt loading, Dịch chuyển tức thời
Yếu tố
Mất gói
Ai gặp phải
Cả server
Khi nào
Ngay sau đăng nhập hoặc bảo trì, Khi đông người
Phụ trách
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), Phát triển client (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Server: giảm kết nối ngắn (tái sử dụng kết nối cho lời gọi giữa các server). Client: khi kết nối thất bại hoặc bị ngắt, tăng dần khoảng cách thử lại và rải ngẫu nhiên.
Việc cần làm (Đội hạ tầng)
Tăng kích thước bảng (nf_conntrack_max), bỏ cổng game khỏi theo dõi (NOTRACK trong bảng raw), cảnh báo theo mức sử dụng.
Con số tham khảo
Giới hạn mặc định khoảng 60.000–260.000 mục tùy bộ nhớ server. Khi tràn, log kernel in ra “nf_conntrack: table full, dropping packet”.
Trên đồ thị
Chạm giới hạn rồi đi ngang · Số mục conntrack (nf_conntrack_count)
Chỗ cần xem
net.netfilter.nf_conntrack_count (số mục hiện tại) trong sysctl, đặt cùng đồ thị với nf_conntrack_max; tìm “nf_conntrack: table full, dropping packet” trong dmesg
Đúng nếu
nf_conntrack_count đi ngang ở mức max, và từ lúc đó log kernel in ra table full
Loại trừ nếu
số mục còn cách xa max. Giới hạn theo dõi kết nối của chính instance AWS thì xem conntrack_allowance_exceeded ở “Vượt giới hạn PPS trên cloud”
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. Netfilter Conntrack Sysfs variables Linux kernel
    Giá trị mặc định của nf_conntrack_max bằng số hash bucket (nf_conntrack_buckets), và số bucket được xác định theo dung lượng bộ nhớ
  2. net/netfilter/nf_conntrack_core.c (Linux v6.12) Linux kernel
    Kích thước mặc định là 65.536 nếu bộ nhớ trên 1 GB, 262.144 nếu trên 4 GB (64-bit); khi đầy, kernel ghi “nf_conntrack: table full, dropping packet” rồi bỏ gói
  3. iptables-extensions(8) — Linux manual page netfilter
    Dùng CT --notrack trong bảng raw để bỏ khỏi theo dõi kết nối

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

Cùng tầng: L7 OS server (kernel)

Nguyên nhân ở tầng khác gây cùng triệu chứng (Không vào được·kẹt loading)

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