מדריך מאמרים
- 1 1. הגבל את מספר תהליכי php-fpm
- 2 2. הפעל את OPCache (כדי לשפר את ביצועי PHP)
- 3 3. הגבל את זמן הביצוע המרבי של סקריפטים של PHP
- 4 4. בדוק שאילתות איטיות של MySQL
- 5 5. הגבל את השימוש במשאבים ב-Memcached
- 6 6. אפשר ל-Nginx לשמור משאבים סטטיים במטמון
- 7 7. מצא את סקריפט ה-PHP שמשתמש הכי הרבה במעבד
- 8 סיכום: 7 דרכים לייעל PHP-FPM
- 9 לסיכום
HestiaCP ספייק של מעבד שרת? מדריך מלא לאופטימיזציה של תהליך PHP-FPM!

האם מעבד השרת תמיד ב-100%? המאוורר מסתובב בפראות? האם מהירות פתיחת האתר מואטת?האשם יכול להיות php-fpm!
לאחרונה גיליתי chenweiliang.com מאגר PHP זה php-fpm התהליך אכל את המעבד בטירוף, והשרת קרס!
כדי להחיות את השרת, ניסיתי סדרה של שיטות אופטימיזציה ולבסוף הצלחתי להפחית את ניצול המעבד.
עכשיו, בואו נשתף את זה מדריך אופטימיזציה יעיל! 🚀
1. הגבל את מספר תהליכי php-fpm
הגדרות ברירת המחדל של php-fpm עשויותללא הגבלההתהליך נוצר ללא שליטה, מה שגורם לעומס יתר על המעבד של השרת.
כדי לייעל זאת, נוכל לשנות את פרמטרי ניהול התהליך.
פתח 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, הפחת את עומס המעבד ושפר את יעילות הביצוע.
3. הגבל את זמן הביצוע המרבי של סקריפטים של PHP
אם סקריפט PHP פועל זמן רב מדי, משאבי המעבד יהיו תפוסים ברציפות.
הגדרת פרק זמן סביר יכול למנוע מתהליכים "עקשניים" להעסיק את השרת במשך זמן רב.
פתח 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 לפעול במשך זמן רב וצמצם בזבוז משאבי מעבד.
4. בדוק MySQL שאילתה איטית
ל-PHP-FPM יש עומס גבוה,זה עלול להיגרם על ידי שאילתת 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%!
יכול להיות שהקצאת המטמון גדולה מדי, מה שגורם למעבד לעבד כמות גדולה של נתונים.
调整 memcached 配置:
sudo nano /etc/memcached.conf
לְשַׁנוֹת:
-m 32 # 限制 Memcached 内存使用 32MB
לאחר מכן הפעל מחדש:
sudo systemctl restart memcached
✅ השפעה: הפחת את עומס המעבד של תהליך 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 מעבד קבצים סטטיים והפחת את השימוש במעבד.
7. מצא את סקריפט ה-PHP שמשתמש הכי הרבה במעבד
אם ה-CPU עדיין גבוה מדי לאחר אופטימיזציה, ייתכן שחלק מהסקריפטים של PHP פועלים בפראות.
השתמש בפקודה הבאה כדי לגלות את תהליך PHP עם השימוש הגבוה ביותר במעבד:
ps -eo pid,user,pcpu,pmem,args --sort=-pcpu | grep php
אם אתה מגלה שסקריפט PHP תופס יותר מדי מעבד, אתה יכול להרוג אותו ישירות:
kill -9 PID
✅ השפעה:זהה במדויק את "התפוחים הרעים" ומונע מתהליך PHP להעסיק את המעבד במשך זמן רב.
סיכום: 7 דרכים לייעל PHP-FPM
✅ הגבל את מספר תהליכי PHP-FPM, כדי למנוע עומס יתר של המעבד
✅ אפשר OPCache, צמצם ניתוח חוזר של קוד PHP
✅ הגדרת פסק זמן של PHP, כדי למנוע פעולה לטווח ארוך
✅ בדיקת שאילתות איטיות של MySQL, מטב את ביצועי שאילתות מסד הנתונים
✅ התאם את הזיכרון השמור, הפחתת עומס המעבד
✅ אפשר מטמון סטטי של Nginx, הפחתת עומס הניתוח של PHP
✅ מצא סקריפטים של PHP בשימוש במעבד גבוה, אופטימיזציה מדויקת
לסיכום
אופטימיזציה של השרת היא כמו כושר, אתה צריך לבצע התאמות מדויקות ולא להתעסק!
לאחר סדרה של אופטימיזציות, עומס המעבד שלי בשרת ירד מ ירידה של 80% ל-15%, האתר נפתח פי שניים מהר יותר!
אם לשרת שלך יש בעיות דומות, נסה את השיטות האלה! 💪
??? בצע פעולה עכשיו! בצע אופטימיזציה של PHP-FPM שלך ושמור את השרת שלך! ???
Hope Chen Weiliang בלוג ( https://www.chenweiliang.com/ ) משותף "תהליך HestiaCP php-fpm תופס הרבה משאבי CPU, איך לייעל אותו? ", זה עשוי לעזור לך.
מוזמנים לשתף את הקישור של מאמר זה:https://www.chenweiliang.com/cwl-32490.html
כדי לפתוח עוד טריקים נסתרים🔑, מוזמנים להצטרף לערוץ הטלגרם שלנו!
שתפו ותעשו לייק אם אהבתם! השיתופים והלייקים שלך הם המניע המתמשך שלנו!