เมื่อติดตั้ง php ผู้ที่ระมัดระวังจะพบว่าเราได้ติดตั้งโมดูล php-fpm ด้วย โมดูล fpm มีหน้าที่ในการประมวลผลกระบวนการร้องขอ การดำเนินการที่เกี่ยวข้องของ fpm จะส่งผลโดยตรงต่อจำนวนคำขอที่เซิร์ฟเวอร์สามารถตอบสนองได้ การตั้งค่าที่เหมาะสมจะช่วยปรับปรุงประสิทธิภาพการประมวลผลได้อย่างมีประสิทธิภาพ ไม่เช่นนั้นเกตเวย์ 502 จะหมดเวลาหรือข้อผิดพลาด 504 จะเกิดขึ้น
มาเปิดไฟล์ www.conf ใต้ /etc/php/7.2/fpm/pool.d และค้นหาพารามิเตอร์ต่อไปนี้:
pm=dynamicpm.max_children=5pm.start_servers=2pm.min_spare_servers=1pm.max_spare_servers=3;pm.max_requests=500
นี่คือพารามิเตอร์เริ่มต้นหลังจากที่ผู้เขียนติดตั้ง PHP ฉันจะอธิบายทีละรายการด้านล่าง:
ไดนามิกแรกบ่งชี้ว่าโหมดการประมวลผลของกระบวนการนั้นเป็นไดนามิก และยังมีโหมดคงที่ที่สอดคล้องกับโหมดนั้นด้วย
หาก pm ถูกตั้งค่าเป็น staic เฉพาะพารามิเตอร์ pm.max_childern เท่านั้นที่จะมีผล
หาก pm ถูกตั้งค่าเป็นไดนามิก พารามิเตอร์สี่ตัวถัดไปจะมีผลใช้งาน ระบบจะเริ่มกระบวนการ pm.start_servers php-fpm เมื่อ php-fpm เริ่มทำงาน จากนั้นจึงปรับจำนวนกระบวนการ php-fpm ระหว่าง pm.min_spare_servers และ pm.max_spare_servers แบบไดนามิกตามความต้องการของระบบ
พารามิเตอร์ที่สอง pm.max_children ระบุจำนวนกระบวนการสูงสุดที่สามารถแยกได้ (เริ่มต้น) แน่นอนว่ายิ่งมีปริมาณมากเท่าใด คำขอก็จะยิ่งสามารถทำได้ในเวลาเดียวกันมากขึ้นเท่านั้น เวลารอคำขอนาน แต่ CPU หรือหน่วยความจำจะยังคงใช้งานได้ ค่านี้อ้างอิงถึงจำนวนกระบวนการ php-fpm ที่เปิดในโหมดคงที่ และจำกัดจำนวนสูงสุดของกระบวนการ php-fpm ในโหมดไดนามิก
พารามิเตอร์ที่สาม pm.start_servers บ่งชี้ว่าหากเป็นโหมดไดนามิก กระบวนการต่างๆ จะถูกสตาร์ทในสถานะเริ่มต้น จากนั้นจึงปรับแบบไดนามิกตามความจำเป็น และถูกกำหนดโดยพารามิเตอร์สองตัว pm.min_spare_servers และ pm.max_spare_servers
พารามิเตอร์ที่สี่ pm.min_spare_servers แสดงถึงจำนวนขั้นต่ำของกระบวนการ php-fpm ในสถานะไม่ได้ใช้งานในโหมดไดนามิก และจำนวนที่คงไว้หลังจากการล้างกระบวนการที่ไม่ได้ใช้งาน
พารามิเตอร์ที่ห้า pm.max_spare_servers แสดงถึงจำนวนสูงสุดของกระบวนการ php-fpm ในสถานะไม่ได้ใช้งานในโหมดไดนามิก นั่นคือเมื่อกระบวนการที่ไม่ได้ใช้งานถึงค่านี้ กระบวนการเหล่านั้นจะถูกล้าง
พารามิเตอร์ที่หก pm.max_requests ระบุจำนวนคำขอก่อนที่จะทำลายกระบวนการและเริ่มต้นใหม่ ซึ่งสามารถหลีกเลี่ยงการรั่วไหลของหน่วยความจำ
แน่นอนว่า max_children ที่นี่คือ 5 ซึ่งเพียงพอแล้วในช่วงเริ่มต้น เมื่อปริมาณการใช้ข้อมูลเพิ่มขึ้น มันจะไม่เพียงพออย่างแน่นอน เรามาพูดถึงการตั้งค่าเฉพาะกันดีกว่า : ระบบหน่วยความจำซีพียู หากทรัพยากรระบบอนุญาต ยิ่งมากเท่าไร ต่อไปนี้เป็นวิธีการคำนวณ ตัวอย่างเช่น กระบวนการ fpm อยู่ที่ประมาณ 15~25M จากนั้นเมื่อเซิร์ฟเวอร์มีหน่วยความจำ 4G ภายใต้สภาวะที่เหมาะสมเท่านั้น เต็มประสิทธิภาพ จากนั้นสังเกตสถานะเซิร์ฟเวอร์และทำการปรับเปลี่ยน
โดยทั่วไปแล้ว เซิร์ฟเวอร์หน่วยความจำขนาดใหญ่ (เช่น 32 และ 64G ขึ้นไป) สามารถพิจารณาโหมดคงที่ ซึ่งมีผลกระทบการทำงานพร้อมกันที่ดี เซิร์ฟเวอร์หน่วยความจำขนาดเล็กสามารถพิจารณาโหมดไดนามิก ซึ่งสามารถควบคุมได้โดยอัตโนมัติตามความต้องการ
คุณสามารถทดสอบความเครียดตามสถานการณ์ของคุณเองและทำการปรับเปลี่ยนตามเงื่อนไขเซิร์ฟเวอร์ของคุณเอง