กระบวนการ php-fpm ของ HestiaCP ใช้ทรัพยากร CPU จำนวนมาก ฉันจะปรับให้เหมาะสมได้อย่างไร

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

กระบวนการ php-fpm ของ HestiaCP ใช้ทรัพยากร CPU จำนวนมาก ฉันจะปรับให้เหมาะสมได้อย่างไร

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 脚本最多执行 30max_input_time = 30  # 处理输入数据最多 30memory_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

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

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

 

发表评论

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

ไดเรกทอรีบทความ
เลื่อนไปที่ด้านบน