HOW to Tuning Ubuntu for high load

5829

Ubuntu server tuning

การที่เราจะให้ Linux Ubuntu server ของเราที่สามารถรับ load สำหรับ web server เช่น Nginx Apache หรือ  NodeJS เป็นต้น เรามาดูกันว่าควรจะ Tune ค่าไหนบ้าง file ไหนที่ควรปรับ ส่วนนี้เป็นส่วนแรกที่เราจะทำการแก้ให้สามารถรับ workload ที่เพิ่มขึ้นได้

Sysctl.conf

ให้เราทำการแก้ไขดังนี้ ในส่วนของ file sysctl.conf

 

#vi /etc/sysctl.conf
--------------------------------------------sysctl.conf-----------------------------------
# Increase size of file handles and inode cache
fs.file-max = 2097152

# Do less swapping
vm.swappiness = 10
vm.dirty_ratio = 60
vm.dirty_background_ratio = 2

### GENERAL NETWORK SECURITY OPTIONS ###

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

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

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

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

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

### TUNING NETWORK PERFORMANCE ###

# 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

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

การนำไปใช้งาน

reboot system หรือ ทำการ reload ข้อมูลของ sysctl  โดยใช้ command ตามด้านนี้ครับ

show params of systcl
#sysctl -p
show params of modify sysctl 
#sysctl -p
----example result------
fs.file-max = 2097152
vm.swappiness = 10
vm.dirty_ratio = 60
vm.dirty_background_ratio = 2
net.ipv4.ip_local_port_range = 2000 65535
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
net.core.rmem_default = 31457280
net.core.wmem_default = 31457280
net.core.somaxconn = 8096
net.core.netdev_max_backlog = 65536
net.core.optmem_max = 25165824
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_wmem = 8192 65536 16777216
net.ipv4.udp_wmem_min = 16384
net.ipv4.tcp_mem = 65536 131072 262144
net.ipv4.udp_mem = 65536 131072 262144
---------------------------------------

สรุปการปรับแต่ง

หลังจากที่เราทำการปรับจูนส่วนนี้จะมีผลเฉพาะ server เท่านั้นครับ การปรับจูนส่วนนี้จะให้ผลในด้านการลองรับ workload ที่มากขึ้น จำนวน concurrent session ที่มากขึ้น แต่ต้องไปปรับจูนส่วนอื่นเพิ่มเติมบน web server หรือ DB ให้สามารถรองรับที่มากขึ้นด้วย ส่วนการ ปรับจูน web server จะนำเสนอในครั้งหน้าครับ

 

 

Facebook Comments