ความแตกต่างและเทคนิคการเพิ่มประสิทธิภาพในไฟล์การกำหนดค่า PHP-FPM /etc/php/8.3/fpm/pool.d/

เมื่อเซิร์ฟเวอร์เริ่มทำงานแล้ว ทุกอย่างจะเรียบร้อยดีหรือไม่? จริงๆ แล้ว ในโลกของ PHP-FPM ไฟล์การกำหนดค่าคือหัวใจสำคัญที่จะกำหนดว่าเว็บไซต์จะทำงานได้อย่างเสถียร ปลอดภัย และมีประสิทธิภาพหรือไม่

การกำหนดค่าพูลกระบวนการสำหรับ PHP-FPM คืออะไร?

PHP-FPM (FastCGI Process Manager) เป็นตัวจัดการกระบวนการสำหรับ PHP ที่ใช้แนวคิดของ "พูล" ในการจัดการกระบวนการ PHP สำหรับเว็บไซต์หรือแอปพลิเคชันต่างๆ

ทุก .conf ไฟล์ดังกล่าวเป็นคำจำกัดความของกลุ่มกระบวนการ ซึ่งระบุพารามิเตอร์สำคัญ เช่น ผู้ใช้ที่กระบวนการทำงาน พอร์ตหรือซ็อกเก็ตที่รับฟัง เส้นทางบันทึก และจำนวนกระบวนการ

กล่าวอีกนัยหนึ่ง ไฟล์เหล่านี้เปรียบเสมือน "สำเนา" ของเซิร์ฟเวอร์ของคุณ ทำให้เว็บไซต์ต่างๆ สามารถทำงานได้อย่างอิสระโดยไม่รบกวนซึ่งกันและกัน

ความแตกต่างและเทคนิคการเพิ่มประสิทธิภาพในไฟล์การกำหนดค่า PHP-FPM /etc/php/8.3/fpm/pool.d/

http://www.conf:默认的进程池

หลังจากติดตั้ง PHP-FPM แล้ว ระบบจะสร้างไฟล์โดยอัตโนมัติ www.conf ไฟล์.

หน้าที่ของมันคือการจัดเตรียมพูลเริ่มต้นที่ใช้งานได้ทันที โดยปกติจะทำงานใน... www-data ผู้ใช้

พูลนี้เหมาะสำหรับสภาพแวดล้อมแบบไซต์เดียว ตั้งค่าได้ง่าย และพารามิเตอร์ส่วนใหญ่เป็นค่าทั่วไป เช่น:

  • user = www-data
  • group = www-data
  • listen = /run/php/php8.3-fpm.sock
  • pm.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.
  • ดัมมี่.คอนฟ์เพื่อเป็นข้อมูลอ้างอิงเท่านั้น ไม่แนะนำให้ใช้

ตัวอย่างการเปรียบเทียบการกำหนดค่า

http://www.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

หากต้องการปลดล็อคเคล็ดลับที่ซ่อนอยู่เพิ่มเติม ยินดีต้อนรับเข้าร่วมช่อง Telegram ของเรา!

แชร์และกดไลค์ถ้าคุณชอบ! การแชร์และการถูกใจของคุณคือแรงบันดาลใจอย่างต่อเนื่องของเรา!

 

发表评论

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ 必填项已用 * 标注

เลื่อนไปที่ด้านบน