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