ไดเรกทอรีบทความ
เฮสเทียซีพี CPU ของเซิร์ฟเวอร์พุ่ง? คู่มือครบวงจรสำหรับการเพิ่มประสิทธิภาพกระบวนการ PHP-FPM!

CPU ของเซิร์ฟเวอร์อยู่ที่ 100% เสมอหรือไม่? พัดลมหมุนรัวๆหรอครับ? ความเร็วในการเปิดเว็บไซต์ช้าลงหรือเปล่า?ผู้ร้ายอาจเป็น php-fpm!
ฉันเพิ่งค้นพบเมื่อไม่นานนี้ chenweiliang.com พูล PHP นี้ php-fpm กระบวนการดังกล่าวกิน CPU อย่างหนัก และเซิร์ฟเวอร์ก็ล่ม!
เพื่อที่จะฟื้นฟูเซิร์ฟเวอร์ ฉันได้ลองใช้วิธีการเพิ่มประสิทธิภาพชุดหนึ่งและในที่สุดก็สามารถลดการใช้งาน CPU ได้
ตอนนี้เรามาแชร์เรื่องนี้กัน คู่มือการเพิ่มประสิทธิภาพอย่างมีประสิทธิภาพ! 🚀
1. จำกัดจำนวนกระบวนการ php-fpm
การตั้งค่าเริ่มต้นของ php-fpm อาจไม่ จำกัดกระบวนการนี้ถูกสร้างขึ้นโดยไม่สามารถควบคุมได้ ส่งผลให้ CPU ของเซิร์ฟเวอร์โอเวอร์โหลด
เพื่อเพิ่มประสิทธิภาพเราสามารถปรับเปลี่ยนพารามิเตอร์การจัดการกระบวนการได้
การฝ่าฟันอุปสรรค php-fpm ไฟล์การกำหนดค่า:
sudo nano /etc/php/*/fpm/pool.d/www.conf
- *เปลี่ยนเป็นเวอร์ชัน PHP ของคุณ เช่น PHP8.3 และเปลี่ยนเป็นแบบนี้:
/etc/php/8.3/fpm/pool.d/www.conf
สอบถามเวอร์ชัน PHP ที่ตั้งโดย HestiaCP
v-list-web-domain user domain.com
ตัวอย่างเช่น:
v-list-web-domain abc chenweiliang.com
ในผลลัพธ์ คุณจะเห็นบางอย่างเช่น:
PHP SUPPORT yes
PHP MODE php-fpm
PHP VERSION 8.3
ซึ่งหมายความว่าเว็บไซต์นี้ใช้ PHP ฮิต.
ค้นหาและแก้ไขพารามิเตอร์ต่อไปนี้:
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-fpm เพื่อให้มีประสิทธิผล:
sudo systemctl restart php-fpm
✅ ผลกระทบจำกัดจำนวนกระบวนการเพื่อป้องกันไม่ให้ php-fpm กินทรัพยากร CPU มากเกินไป
2. เปิดใช้งาน OPCache (เพื่อปรับปรุงประสิทธิภาพ PHP)
PHP จะวิเคราะห์โค้ดใหม่ทุกครั้งที่มีการดำเนินการ ซึ่งเป็นการสิ้นเปลืองทรัพยากร
ทางแก้ไข? เปิดใช้งาน OPCache และแคชรหัส PHP ของคุณ!
编辑 php.ini 件:
sudo nano /etc/php/*/fpm/php.ini
เพิ่มหรือแก้ไขสิ่งต่อไปนี้:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 禁用实时检测,提高性能
หลังจากบันทึกแล้วให้เริ่มกระบวนการ PHP ใหม่:
sudo systemctl restart php8.3-fpm
✅ ผลกระทบ:ลดการแยกวิเคราะห์โค้ด PHP ซ้ำๆ ลดภาระของ CPU และปรับปรุงประสิทธิภาพในการดำเนินการ
3. จำกัดเวลาการดำเนินการสูงสุดของสคริปต์ PHP
หากสคริปต์ PHP ทำงานเป็นเวลานานเกินไป ทรัพยากร CPU จะถูกใช้อย่างต่อเนื่อง
การกำหนดระยะเวลาหมดเวลาที่เหมาะสมสามารถป้องกันไม่ให้กระบวนการที่ "ดื้อรั้น" ครอบครองเซิร์ฟเวอร์เป็นเวลานาน
การฝ่าฟันอุปสรรค php.ini 件:
sudo nano /etc/php/*/fpm/php.ini
ปรับเปลี่ยนพารามิเตอร์ต่อไปนี้:
max_execution_time = 30 # PHP 脚本最多执行 30 秒
max_input_time = 30 # 处理输入数据最多 30 秒
memory_limit = 256M # 限制单个 PHP 进程的内存占用
จากนั้นเริ่มกระบวนการ PHP ใหม่:
sudo systemctl restart php-fpm
✅ ผลกระทบ:ป้องกันไม่ให้กระบวนการ PHP ทำงานเป็นเวลานาน และลดการสิ้นเปลืองทรัพยากร CPU
4. ตรวจสอบ MySQL การค้นหาช้า
PHP-FPM มีโหลดสูงอาจเกิดจากการ query SQL ช้า!
เปิด MySQL บันทึกการค้นหาช้าค้นหาคำสั่ง SQL ที่กำลังถูกระงับอยู่
แก้ไขไฟล์กำหนดค่า MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
เครื่องหมาย:
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 1 # 超过 1 秒的查询会被记录
หลังจากบันทึกแล้วให้รีสตาร์ท MySQL:
sudo systemctl restart mysql
แล้วใช้ mysqldumpslow วิเคราะห์แบบสอบถามที่ช้า:
mysqldumpslow -s c -t 10 /var/log/mysql-slow.log
✅ ผลกระทบ:ค้นพบแบบสอบถาม SQL ที่ใช้เวลานาน เพิ่มประสิทธิภาพการทำงานของฐานข้อมูล และลดภาระของ PHP โดยอ้อม
5. จำกัดการใช้ทรัพยากร Memcached
เมื่อดูรายการกระบวนการ ฉันพบว่า การใช้งาน CPU ของกระบวนการ Memcached อยู่ที่ 24.8%!
อาจเป็นไปได้ว่าการจัดสรรแคชมีขนาดใหญ่เกินไป ส่งผลให้ CPU ประมวลผลข้อมูลจำนวนมาก
调整 memcached การกำหนดค่า:
sudo nano /etc/memcached.conf
แก้ไขใหม่:
-m 32 # 限制 Memcached 内存使用 32MB
จากนั้นรีบูต:
sudo systemctl restart memcached
✅ ผลกระทบ:ลดภาระ CPU ของกระบวนการ Memcached และปรับปรุงประสิทธิภาพแคช
6. เปิดใช้งาน Nginx เพื่อแคชทรัพยากรคงที่
หลายครั้งที่ PHP ประมวลผลคำขอที่มีจำนวนมาก CSS, JS, รูปภาพแต่ไฟล์เหล่านี้ไม่จำเป็นต้องวิเคราะห์ PHP เลย!
ทางแก้ไข? ใช้ Nginx เพื่อแคชทรัพยากรคงที่!
แก้ไขการกำหนดค่า Nginx:
sudo nano /etc/nginx/nginx.conf
เครื่องหมาย:
location ~* \.(jpg|jpeg|png|gif|css|js|ico|xml)$ {
expires max;
log_not_found off;
}
หลังจากบันทึกแล้วให้รีสตาร์ท Nginx:
sudo systemctl restart nginx
✅ ผลกระทบ:ลดจำนวนครั้งที่ PHP ประมวลผลไฟล์คงที่และลดการใช้งาน CPU
7. ค้นหาสคริปต์ PHP ที่ใช้ CPU มากที่สุด
หาก CPU ยังคงสูงเกินไปหลังการเพิ่มประสิทธิภาพ อาจเป็นไปได้ว่าสคริปต์ PHP บางส่วนทำงานผิดปกติ
ใช้คำสั่งต่อไปนี้เพื่อค้นหากระบวนการ PHP ที่มีการใช้งาน CPU สูงสุด:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
หากคุณพบว่าสคริปต์ PHP ใช้ CPU มากเกินไป คุณสามารถหยุดมันโดยตรงได้:
kill -9 PID
✅ ผลกระทบ:ระบุ “แกะดำ” ได้อย่างแม่นยำและป้องกันไม่ให้กระบวนการ PHP ครอบครอง CPU เป็นเวลานาน
สรุป: 7 วิธีเพิ่มประสิทธิภาพ PHP-FPM
✅ จำกัดจำนวนกระบวนการ PHP-FPMเพื่อป้องกันซีพียูโอเวอร์โหลด
✅ เปิดใช้งาน OPCacheลดการแยกวิเคราะห์โค้ด PHP ซ้ำๆ
✅ ตั้งค่าการหมดเวลา PHPเพื่อป้องกันการทำงานในระยะยาว
✅ การตรวจสอบการสอบถาม MySQL ที่ช้าเพิ่มประสิทธิภาพการค้นหาฐานข้อมูล
✅ ปรับหน่วยความจำ Memcached, ลดภาระซีพียู
✅ เปิดใช้งานแคชคงที่ของ Nginx, ลดภาระการแยกวิเคราะห์ PHP
✅ ค้นหาสคริปต์ PHP ที่ใช้งาน CPU สูง, การเพิ่มประสิทธิภาพที่แม่นยำ
ข้อสรุป
การเพิ่มประสิทธิภาพเซิร์ฟเวอร์ก็เหมือนกับการออกกำลังกาย คุณต้องปรับแต่งอย่างแม่นยำและอย่ามัวแต่มัวแต่เล่นๆ!
หลังจากปรับแต่งชุดหนึ่งแล้ว โหลด CPU ของเซิร์ฟเวอร์ของฉันก็ลดลง 80% ลดเหลือ 15%เว็บไซต์เปิดเร็วขึ้นสองเท่า!
หากเซิร์ฟเวอร์ของคุณมีปัญหาคล้ายกัน ลองใช้วิธีเหล่านี้!
???? ลงมือดำเนินการทันที! เพิ่มประสิทธิภาพ PHP-FPM ของคุณและบันทึกเซิร์ฟเวอร์ของคุณ! 🚀
หวัง Chen Weiliang บล็อก ( https://www.chenweiliang.com/ ) แชร์ "กระบวนการ php-fpm ของ HestiaCP ใช้ทรัพยากร CPU จำนวนมาก จะเพิ่มประสิทธิภาพได้อย่างไร? ” มันอาจจะเป็นประโยชน์กับคุณ
ยินดีต้อนรับสู่การแบ่งปันลิงค์ของบทความนี้:https://www.chenweiliang.com/cwl-32490.html
