ไดเรกทอรีบทความ
- 1 การกำหนดค่าพูลกระบวนการสำหรับ PHP-FPM คืออะไร?
- 2 http://www.conf:默认的进程池
- 3 etufo.org.conf: กลุ่มไซต์ที่กำหนดเอง
- 4 dummy.conf: ไฟล์ตัวอย่างหรือไฟล์ตัวแทน
- 5 เหตุใดจึงต้องใช้ไฟล์พูลหลายไฟล์?
- 6 สถานการณ์การประยุกต์ใช้งานจริง
- 7 ตัวอย่างการเปรียบเทียบการกำหนดค่า
- 8 การปรับพารามิเตอร์พูลกระบวนการ PHP-FPM
- 9 สรุป: มุมมองของฉัน
เมื่อเซิร์ฟเวอร์เริ่มทำงานแล้ว ทุกอย่างจะเรียบร้อยดีหรือไม่? จริงๆ แล้ว ในโลกของ PHP-FPM ไฟล์การกำหนดค่าคือหัวใจสำคัญที่จะกำหนดว่าเว็บไซต์จะทำงานได้อย่างเสถียร ปลอดภัย และมีประสิทธิภาพหรือไม่
การกำหนดค่าพูลกระบวนการสำหรับ PHP-FPM คืออะไร?
PHP-FPM (FastCGI Process Manager) เป็นตัวจัดการกระบวนการสำหรับ PHP ที่ใช้แนวคิดของ "พูล" ในการจัดการกระบวนการ PHP สำหรับเว็บไซต์หรือแอปพลิเคชันต่างๆ
ทุก .conf ไฟล์ดังกล่าวเป็นคำจำกัดความของกลุ่มกระบวนการ ซึ่งระบุพารามิเตอร์สำคัญ เช่น ผู้ใช้ที่กระบวนการทำงาน พอร์ตหรือซ็อกเก็ตที่รับฟัง เส้นทางบันทึก และจำนวนกระบวนการ
กล่าวอีกนัยหนึ่ง ไฟล์เหล่านี้เปรียบเสมือน "สำเนา" ของเซิร์ฟเวอร์ของคุณ ทำให้เว็บไซต์ต่างๆ สามารถทำงานได้อย่างอิสระโดยไม่รบกวนซึ่งกันและกัน

http://www.conf:默认的进程池
หลังจากติดตั้ง PHP-FPM แล้ว ระบบจะสร้างไฟล์โดยอัตโนมัติ www.conf ไฟล์.
หน้าที่ของมันคือการจัดเตรียมพูลเริ่มต้นที่ใช้งานได้ทันที โดยปกติจะทำงานใน... www-data ผู้ใช้
พูลนี้เหมาะสำหรับสภาพแวดล้อมแบบไซต์เดียว ตั้งค่าได้ง่าย และพารามิเตอร์ส่วนใหญ่เป็นค่าทั่วไป เช่น:
user = www-datagroup = www-datalisten = /run/php/php8.3-fpm.sockpm.max_children = 5
หากคุณใช้งานบนเว็บไซต์เดียว แค่นี้ก็เพียงพอแล้ว
etยูเอฟโอ.org.conf: กลุ่มไซต์ที่กำหนดเอง
เมื่อคุณมีเว็บไซต์หลายแห่ง คุณจำเป็นต้องสร้างพูลแยกต่างหากสำหรับแต่ละเว็บไซต์
ตัวอย่างเช่น etufo.org.confโดยเฉพาะอย่างยิ่งสำหรับชื่อโดเมน etยูเอฟโอOrg. การกำหนดค่าพิเศษ
โดยทั่วไปมักปฏิบัติดังนี้:
- ระบุผู้ใช้และกลุ่มต่างๆ ตัวอย่างเช่น
user = etufo,group = etufo - ตัวอย่างเช่น กำหนดค่าพอร์ตหรือซ็อกเก็ตสำหรับการรับฟังแยกต่างหาก
listen = /run/php/etufo.sock - ปรับจำนวนกระบวนการเพื่อให้มั่นใจถึงเสถียรภาพของเว็บไซต์ภายใต้การทำงานพร้อมกันจำนวนมาก
- ไฟล์บันทึกข้อมูลแยกต่างหากช่วยให้การแก้ไขปัญหาทำได้ง่ายขึ้น
ข้อดีของวิธีการนี้คือการแยกส่วนความปลอดภัย: แม้ว่าเว็บไซต์หนึ่งจะถูกโจมตี เว็บไซต์อื่นๆ ก็จะไม่ได้รับผลกระทบ
dummy.conf: ไฟล์ตัวอย่างหรือไฟล์ตัวแทน
dummy.conf สิ่งเหล่านี้มักจะเป็นแม่แบบหรือตัวอย่างที่ระบบจัดเตรียมไว้ให้
ฟังก์ชันนี้จะไม่ทำงานจริง เว้นแต่คุณจะแก้ไขและเปิดใช้งานด้วยตนเอง
จุดประสงค์คือเพื่อให้คุณได้ใช้เป็นข้อมูลอ้างอิงและแสดงวิธีเขียนการตั้งค่าพูลใหม่
ดังนั้น มันจึงเหมือนกับ "คู่มือการใช้งาน" มากกว่าจะเป็นการตั้งค่าเพื่อใช้งานจริง
เหตุใดจึงต้องใช้ไฟล์พูลหลายไฟล์?
- 安全性ควรให้ผู้ใช้ที่แตกต่างกันเป็นผู้ดูแลเว็บไซต์แต่ละแห่ง เพื่อหลีกเลี่ยงการทับซ้อนกันของสิทธิ์การใช้งาน
- 性能优化สามารถกำหนดจำนวนกระบวนการสำหรับแต่ละพูลได้แยกกัน และปรับเปลี่ยนได้ตามความต้องการใช้งาน
- การแยกตัวบันทึกข้อมูล ข้อผิดพลาด และพอร์ตการรับฟังถูกแยกออกจากกัน ทำให้การแก้ไขปัญหาทำได้ง่ายขึ้น
ตัวอย่างเช่น ถ้า www.conf มันพังทลายลงetufo.org.conf มันยังคงทำงานได้ตามปกติและจะไม่ทำให้เซิร์ฟเวอร์ล่มทั้งหมด
สถานการณ์การประยุกต์ใช้งานจริง
- เซิร์ฟเวอร์ไซต์เดียวใช้เท่านั้น
www.confแค่นี้ก็พอแล้ว - เซิร์ฟเวอร์มัลติไซต์สร้างหนึ่งอันสำหรับแต่ละเว็บไซต์
.confไฟล์ต่างๆ เช่นetufo.org.conf. - ดัมมี่.คอนฟ์เพื่อเป็นข้อมูลอ้างอิงเท่านั้น ไม่แนะนำให้ใช้
ตัวอย่างการเปรียบเทียบการกำหนดค่า
[www]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
pm = dynamic
pm.max_children = 5
etufo.org.conf (พูลแบบกำหนดเอง)
[etufo.org]
user = etufo
group = etufo
listen = /run/php/etufo.sock
pm = dynamic
pm.max_children = 20
access.log = /var/log/php-fpm/etufo.access.log
คุณจะพบว่าความแตกต่างนั้นอยู่ที่ผู้ใช้ ที่อยู่สำหรับการรับฟัง และจำนวนกระบวนการทำงาน
การปรับพารามิเตอร์พูลกระบวนการ PHP-FPM
หากการกำหนดค่าใช้ พลวัตนี่เป็นวิธีการเริ่มกระบวนการทำงานบางอย่างล่วงหน้าและปรับเปลี่ยนแบบไดนามิกตามปริมาณคำขอ ซึ่งจะตอบสนองได้เร็วขึ้นเมื่อปริมาณคำขอเพิ่มขึ้นอย่างกะทันหัน
สำหรับเว็บไซต์ที่มีปริมาณการเข้าชมจำนวนหนึ่ง แนะนำให้ใช้ pm = dynamicเนื่องจากสามารถรักษาปริมาณกระบวนการที่ไม่ได้ใช้งานในระดับหนึ่งและหลีกเลี่ยงข้อผิดพลาด 500 ในระหว่างการทำงานพร้อมกันจำนวนมาก
ขอแนะนำให้ใช้เฉพาะเมื่อปริมาณการเข้าถึงต่ำมากและทรัพยากรหน่วยความจำมีจำกัด pm = ondemand เพื่อประหยัดทรัพยากร
แนะนำให้เปลี่ยนเป็นแบบไดนามิกและปรับให้เหมาะสม pm.max_children และพารามิเตอร์อื่น ๆ :
pm = dynamic
pm.max_children = 16 ; 根据服务器资源调整,建议值:CPU 核心数 × 2
pm.start_servers = 4 ; 初始进程数,建议设为 max_children × 25%
pm.min_spare_servers = 2 ; 最小空闲进程数
pm.max_spare_servers = 7 ; 最大空闲进程数
pm.max_requests = 3000 ; 每个子进程处理完 3000 个请求后自动重启
pm.process_idle_timeout = 10s ; 空闲进程 10s 后自动退出
การกำหนดค่านี้ช่วยให้มั่นใจได้ถึงประสิทธิภาพในขณะที่หลีกเลี่ยงการสิ้นเปลืองทรัพยากร
สำหรับคำแนะนำการตั้งค่าโดยละเอียด โปรดดูบทช่วยสอนต่อไปนี้ ▼
ตามเอกสารอย่างเป็นทางการของ PHP:
“แต่ละพูลสามารถกำหนดค่าได้อย่างอิสระ ทำให้สามารถกำหนดผู้ใช้ ขีดจำกัด และการตั้งค่าที่แตกต่างกันสำหรับแต่ละแอปพลิเคชันได้”
ข้อความนี้ชี้ให้เห็นอย่างชัดเจนถึงความสำคัญของการกำหนดค่าแบบหลายพูล ได้แก่ ความเป็นอิสระ ความยืดหยุ่น และการควบคุมได้
สรุป: มุมมองของฉัน
การกำหนดค่าเซิร์ฟเวอร์เปรียบเสมือนวาทยกรในวงออร์เคสตรา ที่คอยกำหนดว่าเครื่องดนตรีแต่ละชิ้นควรเล่นอย่างไร
www.conf เป็นตัวนำมาตรฐาน เหมาะสำหรับการแสดงเดี่ยวetufo.org.conf มันคือตัวนำที่ถูกออกแบบมาโดยเฉพาะสำหรับเวทีนั้นๆ และ dummy.conf นี่คือร่างโน้ตดนตรี ที่จะช่วยเตือนความจำเกี่ยวกับการแต่งทำนองเพลงใหม่ๆ
ในยุคที่ให้ความสำคัญกับความปลอดภัยของข้อมูลและการเพิ่มประสิทธิภาพการทำงาน การรู้วิธีใช้ไฟล์การกำหนดค่าเหล่านี้อย่างถูกต้องจึงเป็นกุญแจสำคัญในการควบคุมอายุการใช้งานของเซิร์ฟเวอร์
การตั้งค่าไม่ใช่แค่ข้อความธรรมดาๆ แต่เป็นหัวใจสำคัญของเซิร์ฟเวอร์
หากคุณกำลังดำเนินการอยู่WordPressสำหรับแอปพลิเคชันที่มีหลายไซต์ เราขอแนะนำอย่างยิ่งให้คุณตรวจสอบและปรับแต่งไฟล์พูลเหล่านี้โดยทันที โดยเฉพาะอย่างยิ่งการตั้งค่าพารามิเตอร์พูลกระบวนการ เพื่อให้เซิร์ฟเวอร์ของคุณมีความเสถียรอย่างแท้จริง
หวัง Chen Weiliang บล็อก ( https://www.chenweiliang.com/ บทความเรื่อง "ความแตกต่างและเทคนิคการเพิ่มประสิทธิภาพของไฟล์การกำหนดค่า PHP-FPM /etc/php/8.3/fpm/pool.d/" ที่แชร์ไว้ที่นี่ อาจเป็นประโยชน์สำหรับคุณ
ยินดีต้อนรับสู่การแบ่งปันลิงค์ของบทความนี้:https://www.chenweiliang.com/cwl-33845.html

