Khắc phục lỗi “nf_conntrack: table full, dropping packet” trên CentOS 5/6

Bạn đang gặp phải vấn đề về hiệu năng của Server/VPS kém trên CentOS 5/6. Dường như server không thể xử lý nổi khi traffic tăng cao ? Bạn đã kiểm tra đủ các thành phần CPU, RAM, I/O vẫn còn đáp ứng tốt.

Bạn đang gặp phải vấn đề về hiệu năng của Server/VPS kém trên CentOS 5/6. Dường như server không thể xử lý nổi khi traffic tăng cao ? Bạn đã kiểm tra đủ các thành phần CPU, RAM, I/O vẫn còn đáp ứng tốt. Vậy có thể server của bạn đang gặp phải lỗi này “nf_conntrack: table full, dropping packet” đấy.

1. Kiểm tra lỗi

Nếu đã kiểm tra các tài nguyên trên server vẫn chưa quá tải bạn hãy kiểm tra trong “/var/log/message” ngay nhé. Đôi khi bạn sẽ bắt gặp dòng thông tin sau:

[1737157.057528] nf_conntrack: table full, dropping packet.
[1737157.160357] nf_conntrack: table full, dropping packet.
[1737157.260534] nf_conntrack: table full, dropping packet.

2. Lỗi này xuất phát từ đâu?

Lỗi này chỉ xuất phát trên hệ điều hành CentOS 5/6 có bật iptables firewall. “nf_conntrack_max” là tính năng theo dõi các kết nối đi vào server để đảm bảo kết đây không phải là kết nối độc hại. “nf_conntrack_max” được tích hợp sẵn trong bộ netfilter framework mà iptables đang sử dụng. “nf_conntrack_max” sử dụng một bảng (table) để lưu trữ và kiểm tra thông tin các kết nối trước khi đẩy nó vào server.

Mặc định trên CentOS 5/6 table này chỉ được giới hạn tối đa 65536 kết nối. Một con số rất thấp và chỉ phù hợp với các server có traffic vừa và nhỏ. Khi đạt đến giới hạn này các kết nối khác sẽ bị server từ chối hay còn gọi là “drop packet”. Như vậy đây chính là nguyên nhân.

3. Hướng khắc phục

Đối với CentOS 5

Kiểm tra giá trị “nf_conntrack_max” trên server

[[email protected] ~]# cat /proc/sys/net/ipv4/ip_conntrack_max
65536

Tăng số lượng kết nối tối đa

[[email protected] ~]# echo 524288 > /proc/sys/net/ipv4/ip_conntrack_max

Để áp dụng cấu hình này không bị mất mỗi lần reboot server các bạn thêm vào cuối file  “/etc/sysctl.conf” như sau:

net.netfilter.nf_conntrack_max = 524288
[[email protected] ~]# sysctl -p
net.netfilter.nf_conntrack_max = 524288

Đối với CentOS 6

Các bạn thực hiện tương tự nhưng đường dẫn file có chút thay đổi

Kiểm tra giá trị “nf_conntrack_max” trên server

[[email protected] ~]# cat /proc/sys/net/netfilter/nf_conntrack_max
65536

Tăng số lượng kết nối tối đa

[[email protected] ~]# echo 524288 > cat /proc/sys/net/netfilter/nf_conntrack_max

Để áp dụng cấu hình này không bị mất mỗi lần reboot server các bạn thêm vào cuối file  “/etc/sysctl.conf” như sau:

net.netfilter.nf_conntrack_max = 524288
[[email protected] ~]# sysctl -p
net.netfilter.nf_conntrack_max = 524288

CentOS 7 có cần phải cấu hình không?

Câu trả lời cho các bạn là không cần vì trên CentOS 7 giới hạn mặc định là 262144. Một con số khá cao tuy nhiên nếu server bạn cần nhiều số lượng kết nối hơn bạn vẫn có thể tăng lên tương tự như CentOS 6 nhé.

Tham khảo thêm: Hướng dẫn cài đặt CentOS 8 mới nhất

Ngoài ra nếu trong quá trình thao tác gặp lỗi hoặc có vấn đề thắc mắc, các bạn có thể liên hệ trực tiếp hỗ trợ của 7Host tại [email protected] hoặc website https://7host.vn

Hướng dẫn cài đặt đăng nhập phpMyAdmin One-Click trên DirectAdmin

Cài đặt OpenLiteSpeed trên DirectAdmin phiên bản mới nhất

Hướng dẫn cách xem thời gian hiển thị trong lệnh dmesg

Hướng dẫn cài đặt WordPress trên DirectAdmin (Evolution Skin)

Hướng dẫn cài đặt W3 Total Cache giúp tăng tốc website WordPress

Hướng dẫn thay đổi giao diện (theme) cho gói Hosting cPanel

Các toán tử cơ bản, cấu trúc so sánh và mảng trong Bash

Hướng dẫn cài đặt SSL Let’s Encrypt cho Website với gói Hosting cPanel