การปรับแต่งเคอร์เนล Linux
เพื่อให้ระบบสามารถรองรับการทำงานพร้อมกันได้มากขึ้น นอกจากต้องติดตั้ง event ขยาย แล้ว การปรับแต่งเคอร์เนล Linux ก็เป็นสิ่งสำคัญอันดับหนึ่ง ดังนั้นการปรับแต่งแต่ละข้อนั้นมีความสำคัญอย่างยิ่ง โปรดทำตามอย่างเคร่งครัด
การอธิบายพารามิเตอร์:
max-file: แสดงถึงจำนวนของ file handle ที่สามารถเปิดได้ในระดับระบบ การกำหนดนี้เป็นการกำหนดสำหรับทั้งหมดของ OS ไม่ใช่สำหรับผู้ใช้แต่ละคน
ulimit -n: แสดงถึงการควบคุมจำนวน file handle ที่สามารถเปิดได้ในระดับกระบวนการ การกำหนดนี้จะควบคุม file handle ที่สามารถใช้งานได้สำหรับผู้ใช้ปัจจุบันใน
shellนี้และกระบวนการที่เริ่มต้นจากผู้ใช้นั้น
ตรวจสอบจำนวน file handle ที่สามารถเปิดได้ในระดับระบบ: cat /proc/sys/fs/file-max
เปิดไฟล์ /etc/sysctl.conf และเพิ่มการตั้งค่าดังต่อไปนี้
#พารามิเตอร์นี้ตั้งค่าจำนวน TIME_WAIT ของระบบ หากเกินค่าที่กำหนดจะถูกลบออกทันที
net.ipv4.tcp_max_tw_buckets = 20000
#กำหนดความยาวของคิวการให้บริการสูงสุดสำหรับแต่ละพอร์ตในระบบ นี่คือพารามิเตอร์ทั่วโลก
net.core.somaxconn = 65535
#จำนวนสูงสุดของคำขอการเชื่อมต่อที่ยังไม่ได้รับการยืนยันสามารถเก็บไว้ในคิวได้
net.ipv4.tcp_max_syn_backlog = 262144
#จำนวนสูงสุดของแพ็กเก็ตที่สามารถส่งไปยังคิวเมื่ออัตราการรับแพ็กเก็ตของแต่ละอินเตอร์เฟสเครือข่ายเร็วกว่าการประมวลผลของเคอร์เนล
net.core.netdev_max_backlog = 30000
#ตัวเลือกนี้จะทำให้ลูกค้าที่อยู่ในเครือข่าย NAT หมดเวลา แนะนำให้ตั้งค่าเป็น 0 ตั้งแต่เคอร์เนล Linux 4.12 เป็นต้นไป ได้ลบการตั้งค่า tcp_tw_recycle หากแสดงข้อผิดพลาด "No such file or directory" ให้ละเว้น
net.ipv4.tcp_tw_recycle = 0
#จำนวนไฟล์ทั้งหมดที่กระบวนการในระบบสามารถเปิดได้
fs.file-max = 6815744
#ขนาดของตารางติดตามไฟร์วอลล์ หมายเหตุ: หากไฟร์วอลล์เปิดไม่อยู่จะมีข้อความแสดงข้อผิดพลาด: "net.netfilter.nf_conntrack_max" is an unknown key ให้ละเว้นได้
net.netfilter.nf_conntrack_max = 2621440
net.ipv4.ip_local_port_range = 10240 65000
รัน sysctl -p เพื่อให้ทันที
คำอธิบาย:
/etc/sysctl.conf มีตัวเลือกการตั้งค่าหลายรายการ อาจมีการตั้งค่าเพิ่มเติมตามความต้องการของสภาพแวดล้อมของคุณ
จำนวนไฟล์ที่เปิด
การตั้งค่าจำนวนไฟล์ที่เปิดในระบบเพื่อแก้ปัญหา too many open files ในการทำงานพร้อมกันสูง ตัวเลือกนี้จะส่งผลโดยตรงต่อจำนวนการเชื่อมต่อของลูกค้าสำหรับกระบวนการเดียว
Soft open files เป็นพารามิเตอร์ของระบบ Linux ที่ส่งผลกระทบต่อจำนวนสูงสุดของ file handle ที่กระบวนการเดียวนั้นสามารถเปิดได้ ค่านี้จะมีผลต่อการเชื่อมต่อของผู้ใช้ที่กระบวนการเดียวสามารถรักษาได้ในแอปพลิเคชันที่ต้องการการเชื่อมต่อแบบยาว เช่น การแชท การรัน ulimit -n จะสามารถเห็นค่าพารามิเตอร์นี้ หากเป็น 1024 แสดงว่ากระบวนการเดียวสามารถรักษาเชื่อมต่อได้สูงสุดเพียง 1024 หรืออาจน้อยกว่านั้น (เนื่องจากไฟล์อื่น ๆ ถูกเปิดอยู่) หากเปิดโปรเซส 4 ตัวเพื่อรักษาการเชื่อมต่อของผู้ใช้ จำนวนการเชื่อมต่อทั้งหมดที่แอปพลิเคชันสามารถรักษาได้จะไม่เกิน 4*1024 กล่าวคือสูงสุดเพียง 4x1024 ผู้ใช้สามารถออนไลน์ได้ ควรเพิ่มการตั้งค่านี้เพื่อให้บริการสามารถรักษาการเชื่อมต่อ TCP ได้มากขึ้น
วิธีการปรับปรุง Soft open files สามารถทำได้ 3 วิธี:
วิธีแรก: รันคำสั่ง ulimit -HSn 102400 โดยตรงในเทอร์มินัล จากนั้นรีสตาร์ท workerman
นี่จะใช้ได้แค่ในเทอร์มินัลปัจจุบันเท่านั้น เมื่อออกจากระบบ จำนวน open files จะกลับไปเป็นค่าเริ่มต้น
วิธีที่สอง: เพิ่มบรรทัด ulimit -HSn 102400 ที่ส่วนท้ายของไฟล์ /etc/profile เพื่อให้มันทำงานโดยอัตโนมัติทุกครั้งที่เข้าสู่ระบบเทอร์มินัล หลังจากทำการเปลี่ยนแปลงจะต้องรีสตาร์ท workerman
วิธีที่สาม: หากต้องการให้การเปลี่ยนแปลงค่า open files มีผลถาวร จะต้องแก้ไขไฟล์การตั้งค่า: /etc/security/limits.conf เพิ่มบรรทัดต่อไปนี้ในไฟล์นี้:
* soft nofile 1024000
* hard nofile 1024000
root soft nofile 1024000
root hard nofile 1024000
วิธีนี้จะต้องรีสตาร์ทเซิร์ฟเวอร์เพื่อให้มีผล