מדריך מאמרים
- 1 הסיבה העיקרית לכך ש-PHP-FPM הוא עומס יתר
- 2 אופטימיזציה של מאגר תהליכים PHP-FPM (התאמת פרמטר הליבה)
- 3 אפשר ניטור מצב PHP-FPM כדי לעקוב אחר ההתקדמות בכל עת
- 4 בצע אופטימיזציה של יומני PHP-FPM כדי לפתור בעיות במהירות
- 5 הפעל מחדש את PHP-FPM באופן קבוע כדי למנוע דליפות זיכרון
- 6 מה אם הבעיה נמשכת? אופטימיזציה נוספת!
- 7 תקציר: בצע אופטימיזציה של PHP-FPM והאתר לא יקרוס יותר!
האם נתקלת פעם במצב הזה?הגישה לאתר הואטה לפתע, או אפילו גרמה לשגיאת 500 לאחר הפעלה מחדש של PHP-FPM, הוא חזר לקדמותו., אבל הבעיה מופיעה שוב לאחר זמן מה? זה כל כך מתסכל!
למה זה קורה?למעשה, זה בדרך כללמאגר התהליך של PHP-FPM אינו מוגדר כהלכה, או שמשאבי השרת אינם מספיקים.נגרם על ידי. היום, נעשה אופטימיזציה יסודית HestiaCP PHP-FPM מותקן הופך את האתר ליציב כמו אבן!
הסיבה העיקרית לכך ש-PHP-FPM הוא עומס יתר
PHP-FPM הוא אמנהל תהליכים, אשר אחראי לטיפול בבקשות דינמיות. אם התצורה אינה סבירה, היא עלולה להוביל ל:
- משאבי השרת נגמרו, מה שגורם ל-PHP-FPM לא להיות מסוגל להגיב לבקשות חדשות בזמן;
- מעט מדי תהליכים, כאשר התנועה גדלה לפתע, לא ניתן לעבד אותה בזמן;
- השימוש בתהליך גבוה מדי, מה שגורם לעומס המעבד להתפוצץ.

כיצד לדעת אם PHP-FPM עמוס יתר על המידה?
יכול להשתמש top או htop פקודה לצפייה בשימוש במעבד ובזיכרון:
top -c
אם אתה רואה מידע תהליך דומה לזה הבא, זה אומר ש-PHP-FPM פועל תחת עומס גבוה:
1669293 abc 20 0 790284 227880 185568 R 73.1 0.9 1:30.09 php-fpm: pool chenweiliang.com
1669522 abc 20 0 801924 224224 170236 R 69.9 0.9 0:59.01 php-fpm: pool chenweiliang.com
ראה כיצד התהליכים הללו תופסים למעלה מ-70% מהמעבד? אם זה קורה לעתים קרובות, ה-PHP-FPM שלך חייבת להיות בעיה!
אז איך נוכל לייעל את תצורת 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.
בואו נסתכל על תצורת PHP-FPM שלך:
[chenweiliang.com]
listen = /run/php/php8.3-fpm-chenweiliang.com.sock
listen.owner = abc
listen.group = www-data
listen.mode = 0660
user = abc
group = abc
pm = ondemand
pm.max_children = 8
pm.max_requests = 4000
pm.process_idle_timeout = 10s
אתה יכול לראות את זה שלך pm זה בשימוש הוא ondemand,למרות שזה יכול להפחית את השימוש במשאבים בזמן סרק, כאשר התעבורה גדלה לפתע, ייתכן שהתהליך לא יוכל להגיב בזמן., וכתוצאה מכך שגיאת 500.
1. התאם את פרמטרי מאגר התהליך של PHP-FPM
אם התצורה משתמשת dynamicזוהי שיטה של הפעלה מוקדמת של תהליכי עבודה מסוימים והתאמתם באופן דינמי בהתאם לנפח הבקשות, שיכולה להגיב מהר יותר כאשר נפח הבקשות עולה פתאום.
עבור אתרים עם כמות מסוימת של תנועה, מומלץ להשתמש ב- pm = dynamicמכיוון שהוא יכול לשמור על כמות מסוימת של תהליכים סרק ולמנוע 500 שגיאות במהלך מקביליות גבוהה.
מומלץ להשתמש בו רק כאשר נפח הגישה נמוך ביותר ומשאבי הזיכרון צפופים. pm = ondemand כדי לחסוך במשאבים.
הציע ל ondemand, ולבצע אופטימיזציה pm.max_children ופרמטרים נוספים:
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 后自动退出
למה אתה רוצה לשנות את זה ככה?
pm = dynamic: הקצאת תהליכים בצורה גמישה יותר כדי למנוע המתנה לבקשות שעלולות להיגרם על ידי דרישה;pm.max_children = 16: מניעת שגיאות 500 הנגרמות על ידי מעט מדי תהליכים;pm.start_servers = 5: הימנע מאתחול תהליך איטי;pm.max_requests = 3000:מניעת דליפות זיכרון, למחזר את התהליך באופן קבוע.
2. הגבל את זמן הביצוע של סקריפטים של PHP כדי למנוע תפוסה לטווח ארוך
request_terminate_timeout = 30s ; 超过 30s 的 PHP 脚本自动终止
php_admin_value[memory_limit] = 128M ; 限制 PHP 进程最大内存占用
זה יכול למנוע חלקסקריפטים של PHP שמשתמשים ביותר מדי מעבד יכולים להפיל את השרת שלך.
לאחר השמירה, הפעל מחדש את תהליך ה-PHP:
sudo systemctl restart php8.3-fpmאפשר ניטור מצב PHP-FPM כדי לעקוב אחר ההתקדמות בכל עת
אפשר ניטור תהליכי PHP-FPM והצג אותו בכל עתמספר נוכחי של תהליכים פעילים וסטטוס המתנה של בקשה, כדי למנוע עומס יתר על השרת.
在 php-fpm.conf נוסף ב:
pm.status_path = /status
לאחר מכן, תצורת Nginx:
location /status {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
allow 127.0.0.1;
deny all;
}
בדרך זו, אתה יכול http://yourdomain.com/status בדוק את PHP-FPM בפעולה!
בצע אופטימיזציה של יומני PHP-FPM כדי לפתור בעיות במהירות
在 php-fpm.conf הוסף ל:
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_value[log_errors] = On
php_admin_value[error_reporting] = E_ALL
slowlog = /var/log/php-fpm/slow.log
request_slowlog_timeout = 5s ; 执行超过 5s 的脚本记录到日志
בדרך זו, בכל פעם שמתרחשת שגיאת 500, אתה יכול להציג ישירות את היומן:
tail -f /var/log/php-fpm/error.log
בדוק אם PHP מדווח על שגיאה, כגון out of memory,script execution timeout 等.
הפעל מחדש את PHP-FPM באופן קבוע כדי למנוע דליפות זיכרון
מסוגל לעבור cron הפעל מחדש את PHP-FPM באופן קבוע כדי למנוע מתהליכים ארוכי טווח לגרוםדליפות זיכרון.
crontab -e
הוסף את המשימה המתוזמנת הבאה כדי להפעיל מחדש את PHP-FPM באופן אוטומטי בשעה 3 לפנות בוקר בכל יום:
0 3 * * * /usr/sbin/service php8.3-fpm restart
מה אם הבעיה נמשכת? אופטימיזציה נוספת!
אם אתה עדיין עוקב אחר האופטימיזציה לעילמדי פעם מתרחשות 500 שגיאות, תוכל להמשיך עם האופטימיזציות הבאות:
1. אפשר OPcache כדי לשפר את יעילות הביצוע של PHP
אם OPcache עדיין לא מופעל, אתה יכול להתקין אותו כך (באמצעות אובונטו כדוגמה):
sudo apt install php8.3-opcache -y
לאחר מכן ערוך php.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.validate_timestamps=1
אֵפֶקְט? מהירות ביצוע דף PHP שופרה מאוד!
2. אופטימיזציה של תצורת Nginx
ודא שהפרמטרים הקשורים ל-Nginx סבירים, כגון fastcgi_read_timeout התאם את זה כראוי כדי למנוע סקריפטים של PHP להפסקת על ידי Nginx עקב זמן ביצוע ארוך:
fastcgi_read_timeout 60s;
client_max_body_size 100M;
תקציר: בצע אופטימיזציה של PHP-FPM והאתר לא יקרוס יותר!
אילו התאמות ביצענו לאחר האופטימיזציה הזו?
✅ אופטימיזציה של מאגר התהליך PHP-FPM,להשתמש ondemandותייעל pm.max_children פָּרָמֶטֶר;
✅ הגבלת זמן הביצוע של סקריפטים של PHP, כדי למנוע עיסוק במעבד לטווח ארוך;
✅ אפשר ניטור PHP-FPM, הצג את עומס התהליך בזמן אמת;
✅ אופטימיזציה של יומני PHP-FPM, פתור במהירות 500 שגיאות;
✅ הפעל מחדש את PHP-FPM באופן קבוע, למנוע דליפות זיכרון;
✅ אפשר OPcache, שיפור יעילות ביצוע PHP;
✅ אופטימיזציה של תצורת Nginx, כדי למנוע בעיות פסק זמן.
לאחר אופטימיזציה זו, עומס ה-PHP-FPM יקטן מאוד ותפעול האתר יהיה יציב יותר! 🔥
לך לנסות את זה עכשיו! 💪🚀
Hope Chen Weiliang בלוג ( https://www.chenweiliang.com/ ) משותף "העומס של HestiaCP PHP-FPM גבוה מדי? שגיאת דף אינטרנט דינמי 500? אופטימיזציה זו תיכנס לתוקף באופן מיידי! ", זה עשוי לעזור לך.
מוזמנים לשתף את הקישור של מאמר זה:https://www.chenweiliang.com/cwl-32512.html
כדי לפתוח עוד טריקים נסתרים🔑, מוזמנים להצטרף לערוץ הטלגרם שלנו!
שתפו ותעשו לייק אם אהבתם! השיתופים והלייקים שלך הם המניע המתמשך שלנו!