Bạn đang gặp vấn đề về server centos 5/6 mặt dù RAM, disk, CPU vẫn còn trống và đáp ứng tốt. Nhưng server/VPS luôn trong tình trạng treo không xử lý nỗi khi traffic tăng cao?
Cách kiểm tra lỗi
cat /var/log/message Kết quả trả về: Jul 1 14:53:54 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:54 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:54 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:54 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:54 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:54 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:55 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:55 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:55 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:55 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:59 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:59 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:59 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:59 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:59 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:59 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:59 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:53:59 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:00 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:00 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:04 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:04 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:04 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:05 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:05 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:05 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:05 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:05 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:05 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:05 sv195141 kernel: nf_conntrack: table full, dropping packet. Jul 1 14:54:09 sv195141 kernel: nf_conntrack: table full, dropping packet.
Nguyên nhân gây lỗi
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”.
Cách xử lý
Đối với CentOS 5
Kiểm tra giá trị “nf_conntrack_max” trên server
[root@server ~]# cat /proc/sys/net/ipv4/ip_conntrack_max 65536
Tăng số lượng kết nối tối đa
[root@server ~]# 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:
[root@server ~]# vi /etc/sysctl.conf net.netfilter.nf_conntrack_max = 524288 [root@server ~]# 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
[root@server ~]# cat /proc/sys/net/netfilter/nf_conntrack_max 65536
Tăng số lượng kết nối tối đa
[root@server ~]# 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:
[root@server ~]#/etc/sysctl.conf net.netfilter.nf_conntrack_max = 524288 [root@server ~]# 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é.
test