From 05e5e29d532afca1de24cb5e46e653d4f46798cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=E1=BA=A3i=20Chu=20V=C4=83n?= Date: Thu, 20 Aug 2026 11:02:30 +0700 Subject: [PATCH] Add optimize_sysctl.sh --- optimize_sysctl.sh | 93 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 optimize_sysctl.sh diff --git a/optimize_sysctl.sh b/optimize_sysctl.sh new file mode 100644 index 0000000..917701d --- /dev/null +++ b/optimize_sysctl.sh @@ -0,0 +1,93 @@ +#!/bin/bash + +# Kiểm tra quyền root +if [ "$EUID" -ne 0 ]; then + echo "Vui lòng chạy script bằng quyền root (sudo)." + exit 1 +fi + +# Đọc dung lượng RAM của hệ thống (đơn vị: MB) +TOTAL_RAM_MB=$(free -m | awk '/^Mem:/{print $2}') + +# Cấu hình động dựa trên dung lượng RAM +if [ "$TOTAL_RAM_MB" -gt 8000 ]; then + # Hệ thống RAM lớn (> 8GB) + SOMAXCONN=65535 + MAX_SYN_BACKLOG=65535 + CONNTRACK_MAX=262144 +else + # Hệ thống RAM nhỏ (<= 8GB) + SOMAXCONN=16384 + MAX_SYN_BACKLOG=16384 + CONNTRACK_MAX=65536 +fi + +echo "=== Thông số tối ưu Kernel phát hiện ===" +echo "Total RAM: $TOTAL_RAM_MB MB" +echo "net.core.somaxconn: $SOMAXCONN" +echo "net.ipv4.tcp_max_syn_backlog: $MAX_SYN_BACKLOG" +echo "net.netfilter.nf_conntrack_max: $CONNTRACK_MAX" +echo "========================================" + +# Sao lưu file sysctl.conf hiện tại +BACKUP_SYSCTL="/etc/sysctl.conf.bak.$(date +%F_%T)" +cp /etc/sysctl.conf "$BACKUP_SYSCTL" +echo "[+] Đã sao lưu sysctl.conf cũ tại: $BACKUP_SYSCTL" + +# Xóa các dòng cấu hình cũ trùng lặp nếu có để tránh xung đột +sed -i '/fs.file-max/d' /etc/sysctl.conf +sed -i '/net.core.somaxconn/d' /etc/sysctl.conf +sed -i '/net.core.netdev_max_backlog/d' /etc/sysctl.conf +sed -i '/net.ipv4.tcp_max_syn_backlog/d' /etc/sysctl.conf +sed -i '/net.ipv4.tcp_fin_timeout/d' /etc/sysctl.conf +sed -i '/net.ipv4.tcp_tw_reuse/d' /etc/sysctl.conf +sed -i '/net.ipv4.ip_local_port_range/d' /etc/sysctl.conf +sed -i '/net.ipv4.tcp_max_tw_buckets/d' /etc/sysctl.conf +sed -i '/net.ipv4.tcp_fastopen/d' /etc/sysctl.conf +sed -i '/net.ipv4.tcp_rmem/d' /etc/sysctl.conf +sed -i '/net.ipv4.tcp_wmem/d' /etc/sysctl.conf +sed -i '/net.netfilter.nf_conntrack_max/d' /etc/sysctl.conf + +# Ghi cấu hình tối ưu mạng mới vào cuối file +cat <> /etc/sysctl.conf + +# --- TOI UU REVERSE PROXY CHIU TAI CAO --- +# Tang gioi han mo file cua toan he thong +fs.file-max = 2097152 + +# Mo rong hang doi ket noi (Socket Backlog) +net.core.somaxconn = $SOMAXCONN +net.core.netdev_max_backlog = $SOMAXCONN +net.ipv4.tcp_max_syn_backlog = $MAX_SYN_BACKLOG + +# Tai su dung trang thai TIME_WAIT de giai phong port nhanh hon +net.ipv4.tcp_tw_reuse = 1 +net.ipv4.tcp_fin_timeout = 15 +net.ipv4.tcp_max_tw_buckets = 262144 + +# Mo rong dai port local cho phep ket noi outbound +net.ipv4.ip_local_port_range = 1024 65535 + +# Bat TCP Fast Open de tang toc bat tay 3 buoc (neu duoc ho tro) +net.ipv4.tcp_fastopen = 3 + +# Tang gioi han theo doi ket noi (Chong loi conntrack: table full) +net.netfilter.nf_conntrack_max = $CONNTRACK_MAX + +# Toi uu hoa cua so buffer TCP (Buffer size tu dong dieu chinh) +net.ipv4.tcp_rmem = 4096 87380 16777216 +net.ipv4.tcp_wmem = 4096 65536 16777216 +EOF + +# Áp dụng cấu hình ngay lập tức mà không cần reboot server +echo "[+] Đang áp dụng cấu hình Kernel mới..." +sysctl -p + +if [ $? -eq 0 ]; then + echo "[+] Tối ưu hóa sysctl.conf thành công!" +else + echo "[-] Có lỗi xảy ra khi áp dụng cấu hình. Đang khôi phục bản sao lưu..." + cp "$BACKUP_SYSCTL" /etc/sysctl.conf + sysctl -p + exit 1 +fi