ไดเรกทอรีบทความ
เซิร์ฟเวอร์HestiaCP ทำงานหนักเกินไปใช่ไหม? คู่มือฉบับสมบูรณ์สำหรับการเพิ่มประสิทธิภาพกระบวนการ 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 เวอร์ชัน 8.3
ค้นหาและแก้ไขพารามิเตอร์ต่อไปนี้:
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 ของคุณและปกป้องเซิร์ฟเวอร์ของคุณ! 🚀
หวังว่า บทความเรื่อง "กระบวนการ php-fpm ของ HestiaCP ใช้ทรัพยากร CPU มาก จะเพิ่มประสิทธิภาพได้อย่างไร?" ที่แชร์ไว้ในบล็อกของ Chen Weiliang ( https://www.chenweiliang.com/ ) จะเป็นประโยชน์กับคุณ
โปรดแชร์ลิงก์บทความนี้ได้ตามสบาย: https://www.chenweiliang.com/cwl-32490.html
