(Linux) Network tuning

zazxxxlh
network tuning

(Linux) Networ tuning - Khi bạn sử dụng Linux based OS, ban đầu bản thân Linux sẽ chạy rất ngon, tuy nhiên sau chừng 100 concurrent connection bạn sẽ bắt đầu thấy khó chịu, vì không hiểu tại sao nó lại chạy chậm hẳn luôn. Trường hợp thấy rất nhiều với các hệ thống web app, web app và 1 số ứng dụng cho local mà số lượng connection nhiều và liên tục.

Mình vốn không giỏi content nên mọi người có thể xem bài viết cụ thể tại đường dẫn phía dưới.

https://kipalog.com/posts/TCP-tuning-trick-cho-HTTP-server by duydx

Dưới dây là file configuration mà mình đang sử dụng cho VPS có cấu hình tương đối.

  • vCPU: 4 core.
  • RAM: 8G

# IMPROVE SYSTEM MEMORY MANAGEMENT
#

# Increase size of file handles and inode cache
fs.file-max = 2097152


# TUNING NETWORK PERFORMANCE
#

# Allowed local port range
net.ipv4.ip_local_port_range = 2048 65535

# Decrease the time default value for tcp_fin_timeout connection (second)
net.ipv4.tcp_fin_timeout = 15

# Decrease the time default value for connections to keep alive (second)
net.ipv4.tcp_keepalive_time = 120
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15

# Default Socket Receive Buffer
net.core.rmem_default = 31457280

# Maximum Socket Receive Buffer
net.core.rmem_max = 12582912

# Default Socket Send Buffer
net.core.wmem_default = 31457280

# Maximum Socket Send Buffer
net.core.wmem_max = 12582912

# Increase number of incoming connections
net.core.somaxconn = 4096

# Increase number of incoming connections backlog
net.core.netdev_max_backlog = 65536

# Increase the maximum amount of option memory buffers
net.core.optmem_max = 25165824

# Increase the maximum total buffer-space allocatable
# This is measured in units of pages (4096 bytes)
net.ipv4.tcp_mem = 65536 131072 262144
net.ipv4.udp_mem = 65536 131072 262144

# Increase the read-buffer space allocatable
net.ipv4.tcp_rmem = 8192 87380 16777216
net.ipv4.udp_rmem_min = 16384

# Increase the write-buffer-space allocatable
net.ipv4.tcp_wmem = 8192 65536 16777216
net.ipv4.udp_wmem_min = 16384

# Force to reuse connection.
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1


# SECURITY
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
net.ipv4.tcp_syncookies=1

# Increase the tcp-time-wait buckets pool size to prevent simple DOS attacks
net.ipv4.tcp_max_tw_buckets = 1440000

# Protect Against TCP Time-Wait
net.ipv4.tcp_rfc1337 = 1

# Prevent some spoofing attacks
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

# Number of times SYNACKs for passive TCP connection.
net.ipv4.tcp_synack_retries = 2

Để dùng config này, thay thế tất cả chuỗi trong /etc/sysctl.conf bằng cái trên.

Sau đó dùng lệnh: sysctl -p đề apply.

Network tuning