CLOUD PAAS / APPLICATION SETTINGS

การกำหนดค่าอัตโนมัติสำหรับเซิร์ฟเวอร์แอปพลิเคชัน PHP

คู่มือนี้เรียบเรียงและปรับรูปแบบสำหรับ Ruk-Com Cloud PaaS ภาพหน้าจออาจแตกต่างเล็กน้อยตามเวอร์ชันของระบบ

คลิกหรือแตะภาพหน้าจอเพื่อดูรายละเอียดขนาดจริง

วัตถุประสงค์

บทความนี้อธิบายการใช้งาน การกำหนดค่าอัตโนมัติสำหรับเซิร์ฟเวอร์แอปพลิเคชัน PHP บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง

ก่อนเริ่มดำเนินการ

  • เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
  • ตรวจสอบชื่อ Environment, Region และทรัพยากรเป้าหมายก่อนบันทึกการเปลี่ยนแปลง
  • สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production

การจัดระเบียบองค์ประกอบทรัพยากรแบบ dynamic ให้สมบูรณ์และเสริม PHP เพื่อเพิ่มประสิทธิภาพสูงสุดสำหรับการรวม PHP เข้ากับ PaaS เมื่อเปลี่ยนจำนวนทรัพยากรที่จัดสรรสำหรับ environment ของคุณ (เช่นจำนวน cloudlets) โดยจะปรับคำสั่ง PHP ที่เหมาะสมอัตโนมัติเพื่อให้เหมาะสมกับเงื่อนไขใหม่ อย่างไรก็ตาม คุณยังคงกำหนดค่าพารามิเตอร์ได้ด้วยตนเองภายใน file กำหนดค่าuration

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

นอกจากนี้คุณสามารถเรียนรู้วิธีการทำงานของ Auto-Configuration หรือวิธีปิดใช้งานการเพิ่มประสิทธิภาพอัตโนมัติโดยการกำหนดค่าใหม่ด้วยตนเองสำหรับคำสั่งเหล่านี้

Apache PHP การตั้งค่าที่ปรับได้อัตโนมัติ

การจัดการคำขอแบบไดนามิกใน Apache PHP โดยใช้เตรียมส้อมMulti-Processing Module (MPM) ซึ่งช่วยเปิดเผยการเพิ่มศักยภาพของเซิร์ฟเวอร์ได้อย่างเต็มที่ คำสั่ง MPM แสดงอยู่ในไฟล์ กำหนดค่าuration หลักของ Apache/etc/httpd/conf/httpd.conf

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

รายการสำหรับพารามิเตอร์ทั้งหมดที่กำหนดค่าสำหรับเตรียมส้อมโมดูล:

  • เริ่มเซิร์ฟเวอร์- เซ็ตจำนวนของกระบวน child server ที่สร้างขึ้นเมื่อเริ่มต้น
  • MinSpareServers(MaxSpareServers) - กำหนดจำนวนการประมวลผลเซิร์ฟเวอร์ขั้นต่ำ (สูงสุด) ที่เก็บไว้สำรอง
  • เซิร์ฟเวอร์จำกัด- ตั้งค่าสูงสุดที่อนุญาตสำหรับคำสั่ง MaxRequestWorkers
  • MaxConnectionsPerChild- กำหนดจำนวนคำขอที่กระบวนการ single child สามารถให้บริการได้
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ขึ้นอยู่กับทรัพยากรที่จัดสรร (เช่น dynamic cloudlets ที่จองไว้สำหรับ Apache PHP server) และความจุของ CPU ที่ผู้ให้บริการโฮสต์ของคุณจัดหาโดยเฉพาะ แพลตฟอร์มจะปรับพารามิเตอร์เซิร์ฟเวอร์จำกัดและMaxRequestWorkersโดยอัตโนมัติ:

MaxRequestWorkers=เซิร์ฟเวอร์จำกัด= นาที({คอนเทนเนอร์ราม}/ 30MiB, {คอร์นับ}* 5 )

เนื่องจากคำสั่งนี้ คำสั่งทั้งสองจะถูกระบุเท่ากับค่าที่ต่ำกว่าระหว่าง:

  • จัดสรรให้กับจำนวน node ของ RAM หารด้วย 30
  • จำนวนคอร์ของเซิร์ฟเวอร์จริงของโฮสต์ที่คอนเทนเนอร์วางอยู่ คูณด้วย 5

ด้วยวิธีนี้ พารามิเตอร์จะเปลี่ยนแปลงแบบไดนามิกตามจำนวน cloudlets ที่จัดสรรแต่จะไม่ขยายเกินขีดจำกัดของฮาร์ดแวร์

หมายเหตุ:หากคุณต้องการระบุค่าที่กำหนดเองสำหรับคำสั่งเหล่านี้ โปรดระวังว่าค่าที่ไม่ถูกต้องอาจทำให้ Apache PHP server ไม่เสถียร

- ถ้าเซิร์ฟเวอร์จำกัดสูงกว่าที่จำเป็นมาก shared memory ที่ไม่ได้ใช้จะถูกจัดสรร; ถ้าระบุพารามิเตอร์ต่ำเกินไปจะไม่แสดงให้เห็นประสิทธิภาพของเซิร์ฟเวอร์ทั้งหมดที่อาจเกิดขึ้นได้

-MaxRequestWorkersควรใหญ่พอที่จะรองรับคำขอพร้อมกันได้มากเท่าที่คุณต้องการและมีขนาดเล็กพอที่จะรับรองว่ามี RAM เพียงพอ

คุณอาจสนใจวิธีการทำงานของ Auto-Configuration หรือวิธีปิดใช้งานการเพิ่มประสิทธิภาพอัตโนมัติเพื่อตั้งค่าที่คุณกำหนดเองสำหรับคำสั่งเหล่านี้

การตั้งค่าที่ปรับได้อัตโนมัติ NGINX PHP

การจัดการคำขอใน NGINX PHP แอปพลิเคชันเซิร์ฟเวอร์ได้รับการจัดการโดย FastCGI Process Manager (FPM) ซึ่งสามารถกำหนดค่าผ่านไฟล์ /etc/php-fpm.conf ซึ่งถูกเพิ่มโดยอัตโนมัติในรายการโปรดที่ file manager คอนเทนเนอร์สำหรับการเข้าถึงอย่างรวดเร็ว:

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

FPM ทำงานในโหมดตามคำขอตามความต้องการ(คำสั่ง) ค่าเริ่มต้น โดยจะสร้างกระบวนการใหม่เมื่อจำเป็น (เช่น ตามคำขอ) และกำจัดกระบวนการที่ไม่ได้ใช้งาน พารามิเตอร์เพิ่มเติมสำหรับโหมดนี้คือ:

  • pm.max_children- กำหนดจำนวนสูงสุดของ child processes (เท่ากับจำนวนของ CPU core ที่พร้อมใช้งานสำหรับคอนเทนเนอร์แต่ไม่น้อยกว่า 2)

เคล็ดลับ:ค่าที่แน่นอนขึ้นอยู่กับความจุของ CPU ที่ให้บริการโดยผู้ให้บริการโฮสต์ของคุณโดยเฉพาะและจำนวน cloudlets ที่จัดสรรสำหรับคอนเทนเนอร์ ด้วยวิธีนี้ การขยายจำนวน cloudlets จะส่งผลให้พารามิเตอร์ pm.max_children เพิ่มขึ้นโดยอัตโนมัติ

คำสั่งนี้สามารถกำหนดได้อย่างชัดเจนโดยไม่ต้องปิดใช้งานการเพิ่มประสิทธิภาพอัตโนมัติผ่านตัวแปรที่เหมาะสมPHPFPM_MAX_CHILDREN

  • pm.process_idle_timeout- ตั้งค่า delay ก่อนที่จะทำลายการดำเนินการที่ไม่ได้ใช้งาน (60 วินาที)
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

นอกจากนี้เพื่อให้ได้ประสิทธิภาพสูง ตัวฟัง PHP FPM ใช้ UNIX domain socket แทน TCP ทั่วไป โซลูชันดังกล่าวเหมาะสมกว่าสำหรับการสื่อสารภายในโฮสต์เดียวกันทำให้สามารถข้ามการตรวจสอบและการดำเนินการบางอย่างได้ (เช่น การกำหนดเส้นทาง)

วิธีการทำงานของ PHP Auto-Configuration

คุณสามารถตรวจสอบพารามิเตอร์ที่กล่าวถึงข้างต้นว่ามีการเปลี่ยนแปลงอย่างไรตามทรัพยากรที่จัดสรร ยกตัวอย่างเช่น Apache PHP server:

1.สร้างPHP environment ใหม่ด้วยอาปาเช่ PHPแอปพลิเคชันเซิร์ฟเวอร์ภายใน (หากคุณยังไม่มี)

จากนั้นคลิกปุ่มการกำหนดค่าสำหรับโหนดนี้และค้นหาการกำหนดค่าโมดูลเตรียมส้อมในไฟล์/etc/httpd/conf/httpd.conf

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
ค่าของคำสั่งสำหรับ cloudlets ปัจจุบันกรณีนี้คือ 16

2. ตอนนี้ใช้ปุ่มเปลี่ยนโทโพโลยีสภาพแวดล้อมเพื่อตั้งค่าขีดจำกัดทรัพยากรใหม่สำหรับ Apache PHP server (เช่น 32 cloudlets) รีเฟรชไฟล์/etc/httpd/conf/httpd.confและเปรียบเทียบค่าของพารามิเตอร์ prefork กับค่าในขั้นตอนก่อนหน้า

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

อย่างที่คุณเห็น ค่าของคำสั่งเพิ่มขึ้นโดยอัตโนมัติเนื่องจากมีการจัดสรรทรัพยากรที่พร้อมใช้งานมากขึ้น ดังนั้นการเพิ่มประสิทธิภาพอัตโนมัติจึงทำงานในทำนองเดียวกัน เมื่อลดจำนวน cloudlets ลงค่าพารามิเตอร์เหล่านี้จะลดลงไปด้วย

วิธีปิดใช้งานการเพิ่มประสิทธิภาพอัตโนมัติ

หากต้องการระบุค่าที่กำหนดเองแทนคำสั่งที่กำหนดค่าโดยอัตโนมัติ คุณต้องปิดใช้งานการเพิ่มประสิทธิภาพอัตโนมัติ มิฉะนั้นการเปลี่ยนแปลงที่คุณกำหนดเองจะถูกเปลี่ยนกลับระหว่างการรีสตาร์ท/อัปเดตคอนเทนเนอร์

เพิ่มเติม:ค่าคำสั่งที่ไม่เหมาะสมอาจทำให้เซิร์ฟเวอร์ของคุณไม่เสถียร ดังนั้นจึงไม่แนะนำให้ใช้การเปลี่ยนแปลงด้วยตนเองเว้นแต่คุณจะรู้ว่ากำลังทำอะไรอยู่

หากต้องการเปลี่ยนการตั้งค่าที่กำหนดค่าอัตโนมัติด้วยตนเองคุณต้องตั้งค่าตัวแปร environmentJELASTIC_AUTOCONFIGให้เป็น false

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

การใช้งานแบบเดิม

ในคอนเทนเนอร์เก่า คุณต้องลบบรรทัดที่มีเครื่องหมายการเพิ่มประสิทธิภาพ Jelastic ที่จุดเริ่มต้นของไฟล์การกำหนดค่าที่เกี่ยวข้อง:

  • อาปาเช่ PHP- “# เครื่องหมายการกำหนดค่าอัตโนมัติ Jelastic” ภายในไฟล์/etc/httpd/conf/httpd.conf 
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
  • NGINX PHP- “; เครื่องหมายการกำหนดค่าอัตโนมัติ Jelastic” ภายในไฟล์/etc/php-fpm.conf
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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