HestiaCP PHP-FPM נמצא תחת עומס כבד? שגיאת דף אינטרנט דינמי 500? אופטימיזציה זו תיכנס לתוקף באופן מיידי!

האם נתקלת פעם במצב הזה?הגישה לאתר הואטה לפתע, או אפילו גרמה לשגיאת 500 לאחר הפעלה מחדש של PHP-FPM, הוא חזר לקדמותו., אבל הבעיה מופיעה שוב לאחר זמן מה? זה כל כך מתסכל!

למה זה קורה?למעשה, זה בדרך כללמאגר התהליך של PHP-FPM אינו מוגדר כהלכה, או שמשאבי השרת אינם מספיקים.נגרם על ידי. היום, נעשה אופטימיזציה יסודית HestiaCP PHP-FPM מותקן הופך את האתר ליציב כמו אבן!

הסיבה העיקרית לכך ש-PHP-FPM הוא עומס יתר

PHP-FPM הוא אמנהל תהליכים, אשר אחראי לטיפול בבקשות דינמיות. אם התצורה אינה סבירה, היא עלולה להוביל ל:

  • משאבי השרת נגמרו, מה שגורם ל-PHP-FPM לא להיות מסוגל להגיב לבקשות חדשות בזמן;
  • מעט מדי תהליכים, כאשר התנועה גדלה לפתע, לא ניתן לעבד אותה בזמן;
  • השימוש בתהליך גבוה מדי, מה שגורם לעומס המעבד להתפוצץ.

HestiaCP PHP-FPM נמצא תחת עומס כבד? שגיאת דף אינטרנט דינמי 500? אופטימיזציה זו תיכנס לתוקף באופן מיידי!

כיצד לדעת אם 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

כדי לפתוח עוד טריקים נסתרים🔑, מוזמנים להצטרף לערוץ הטלגרם שלנו!

שתפו ותעשו לייק אם אהבתם! השיתופים והלייקים שלך הם המניע המתמשך שלנו!

 

发表 评论

כתובת האימייל שלך לא תפורסם. 必填 项 已 用 * תווית

גלול למעלה