VestaCP หลังจากที่บริการเว็บเลือกเทมเพลต "phpfcgid" กระบวนการ PHP-CGI จำนวนมากทำให้หน่วยความจำหมดอย่างรวดเร็ว:
- โดยพื้นฐานแล้ว หน่วยความจำของฉันหมดสองสามชั่วโมงหลังจากรีสตาร์ทเซิร์ฟเวอร์
- กระบวนการ PHP-CGI ที่ไม่ได้ใช้งานก่อนหน้านี้จะไม่ถูกฆ่า และหนึ่งกระบวนการทำงานเกือบ 1 กระบวนการย่อย โดยใช้หน่วยความจำอย่างน้อย 20M
ใช้ใน SSH htop
คำสั่ง (จำเป็นต้องติดตั้ง) คุณสามารถดูสถานะนี้ ▼
หากคุณได้รับข้อความแสดงข้อผิดพลาด "-bash: htop: command not found" เมื่อคุณใช้คำสั่ง htop โปรดดูวิธีแก้ไขในบทช่วยสอนนี้ ▼
กระบวนการ PHP-CGI จำนวนมากทำให้หน่วยความจำหมดอย่างรวดเร็ว ปัญหาอยู่ใน VestaCPCentOSในเทมเพลต phpfcgid จะใช้การกำหนดค่าที่ไม่ได้รับการปรับให้เหมาะสม
- VestaCP ในเทมเพลต phpfcgid ตั้งค่า 1 กระบวนการ PHP-CGI เพื่อเรียกใช้กระบวนการย่อยสูงสุด 20 กระบวนการ
ขอร้อง /usr/local/vesta/data/templates/web/httpd/phpfcgid.sh
บรรทัดที่ 13 ของไฟล์:
export PHP_FCGI_CHILDREN=20
อย่างไรก็ตาม การตั้งค่าดังกล่าวละเมิดคำเตือนของ Apache ในเอกสารการจัดการกระบวนการย่อยของ PHP:
การจัดการกระบวนการลูก PHP (PHP_FCGI_CHILDREN) ควรปิดการใช้งานด้วย mod_fcgid เสมอ ซึ่งจะกำหนดเส้นทางคำขอครั้งละหนึ่งคำขอไปยังกระบวนการของแอปพลิเคชันที่เกิด ดังนั้น กระบวนการย่อยใดๆ ที่สร้างโดย PHP จะไม่ถูกใช้อย่างมีประสิทธิภาพ (นอกจากนี้ กระบวนการลูกของ PHP อาจไม่สามารถยุติได้อย่างถูกต้อง .) โดยค่าเริ่มต้นและด้วยการตั้งค่าตัวแปรสภาพแวดล้อม PHP_FCGI_CHILDREN=0, การจัดการกระบวนการลูกของ PHP ถูกปิดใช้งาน
เนื่องจากในโมดูล mod_fcgid ของ Apache กระบวนการ PHP-CGI สามารถตอบสนองคำขอได้เพียงคำขอเดียวและเรียกใช้ในแต่ละครั้ง กระบวนการย่อยของ PHP-CGI จึงไม่มีประสิทธิภาพมาก
ดังนั้น ควรปิดการตั้งค่าสำหรับการจัดการกระบวนการย่อยของ PHP โดยตรง ▼
PHP_FCGI_CHILDREN=0
ในเวลาเดียวกัน หากคุณมีโฮสต์เสมือนที่สร้างขึ้นแล้ว คุณต้องแก้ไขไฟล์การกำหนดค่าของเว็บไซต์ทั้งหมด ▼
/home/用户名/web/域名/cgi-bin/fcgi-starter
หลังจากเปิดไฟล์การกำหนดค่า fcgi-starter แล้ว ให้แทรก ▼ . ต่อไปนี้
export PHP_FCGI_CHILDREN=20
ปรับเปลี่ยนเป็น ▼
export PHP_FCGI_CHILDREN=0
- หลังจากแก้ไข การจัดการกระบวนการย่อยของ PHP จะถูกปิดในโหมด mod_fcgid
- กระบวนการ PHP-CGI จะไม่ทำให้เกิดกระบวนการย่อยอีกต่อไป ซึ่งจะช่วยประหยัดหน่วยความจำได้มาก
นอกจากนี้ VestaCP ไม่ได้ตั้งค่ากลไกการสิ้นสุดสำหรับกระบวนการที่ไม่ได้ใช้งาน:
- กระบวนการ PHP-CGI ที่ดำเนินการใหม่ทั้งหมดจะใช้หน่วยความจำต่อไปจนกว่าระบบจะรีบูต
ในการแก้ไขปัญหานี้ เพียงเพิ่มไฟล์ปรับแต่ง mod_fcgid /etc/httpd/conf.d/fcgid.conf
เพิ่มการตั้งค่าต่อไปนี้ใน ▼
FcgidIdleTimeout 120
- ตั้งค่า Apache เพื่อฆ่ากระบวนการ PHP-CGI ที่ไม่ได้ใช้งานเป็นเวลา 2 นาที (120 วินาที) โดยอัตโนมัติ
หลังจากตั้งค่าเสร็จแล้ว ให้เริ่มบริการ Apache ใหม่ ▼
service httpd restart
หลังจากเริ่มบริการใหม่ กระบวนการ PHP-CGI หลายร้อยรายการที่เคยแสดงใน HTOP ก่อนหน้านี้จะไม่แสดงอีกต่อไป
โดยทั่วไปแล้ว กระบวนการ PHP-CGI เดียวสำหรับผู้ใช้ Vesta CP คนเดียวจะใช้หน่วยความจำ 30 ถึง 40M ซึ่งเป็นที่น่าพอใจอย่างยิ่งลินุกซ์ข้อกำหนดของโฮสต์
ดังนั้น网络营销คนอยากทำดีSEOสิ่งสำคัญคือต้องเพิ่มประสิทธิภาพการกำหนดค่าของ Vesta CP และเทมเพลต ^_^
คุณสามารถดูบทช่วยสอนต่อไปนี้บนแผง VestaCP ▼
หวัง Chen Weiliang บล็อก ( https://www.chenweiliang.com/ ) แชร์ "การเพิ่มประสิทธิภาพขั้นตอนการกำหนดค่าเทมเพลต VestaCP phpfcgid ข้อผิดพลาดหลายหน่วยความจำหมด 500" ซึ่งเป็นประโยชน์กับคุณ
ยินดีต้อนรับสู่การแบ่งปันลิงค์ของบทความนี้:https://www.chenweiliang.com/cwl-735.html
ยินดีต้อนรับสู่ช่อง Telegram ของบล็อกของ Chen Weiliang เพื่อรับข่าวสารล่าสุด!
📚 คู่มือนี้มีคุณค่ามหาศาล 🌟 นี่เป็นโอกาสที่หายาก อย่าพลาด! ⏰⌛💨
แชร์และชอบถ้าคุณชอบ!
การแบ่งปันและไลค์ของคุณเป็นแรงจูงใจอย่างต่อเนื่องของเรา!