PvP Server Kiralama & Oyun Sunucuları
0 Giriş Yap Kayıt Ol

פתרון לשגיאת 502 Bad Gateway ושגיאת 504 Gateway Timeout בשרת Linux

Yazdır

פתרון לשגיאת 502 Bad Gateway ושגיאת 504 Gateway Timeout בשרת Linux

מדריך שלב אחר שלב לפתרון בעיות של Nginx, Apache, PHP-FPM וזמן קצוב שירות.

לראות באתרי אינטרנט 502 Bad Gateway ו 504 שער פסק זמן שגיאות מתרחשות בדרך כלל מכיוון ששרת האינטרנט אינו מקבל את התגובה הנכונה משירות הקצה האחורי. שירות זה יכול להיות PHP-FPM, Apache backend, אפליקציית Node.js, שירות API של פאנל משחקים או אפליקציה אחרת מאחורי ה-proxy.

שגיאות אלו שכיחות במיוחד באירוח, פאנל משחקים, WHMCS, Pterodactyl, פאנל ניהול מותאם אישית ומערכות משגר מבוססות אינטרנט.

הסבר פשוט: Nginx הוא כמו המלווה בדלת. אם ה-PHP או האפליקציה בפנים לא מגיבים, הוא יציג שגיאת 502 או 504 למשתמש.

1. ההבדל בין שגיאת 502 ל-504

  • שער גרוע 502: שרת האינטרנט אינו יכול להתחבר לשירות העורף או מקבל תגובה משובשת.
  • פסק זמן של שער 504: נראה שהשירות האחורי מגיב, אבל התגובה לא מוחזרת בזמן.

אז 502 הוא יותר קריסת חיבור/שירות, ו-504 הוא בעיית איטיות או פסק זמן.

2. בדיקת סטטוסי שירות

ראשית, בדוק אם שרת האינטרנט ושירותי ה-PHP פועלים.

systemctl status nginx
systemctl status apache2
systemctl status php-fpm

במערכות CentOS, AlmaLinux או Rocky Linux, שירות PHP-FPM עשוי להיקרא:

systemctl status php-fpm
systemctl status httpd

אם השירות הופסק, הפעל אותו מחדש:

systemctl restart nginx
systemctl restart php-fpm

3. סקירת קובצי יומן

זה לא נכון להמשיך בניחושים עבור שגיאות 502 ו-504. קובץ היומן מציג את הסיבה האמיתית לשגיאה.

tail -n 100 /var/log/nginx/error.log
tail -n 100 /var/log/apache2/error.log

במערכות מבוססות CentOS:

tail -n 100 /var/log/httpd/error_log

ניתן לראות את ההצהרות הבאות ביומנים:

  • connect() נכשל: לא ניתן להתחבר לשירות הקצה האחורי.
  • תם הזמן הקצוב במעלה הזרם: שירות אחורי מגיב באיחור.
  • חיבור סירב: השירות מושבת או שיש העברה ליציאה הלא נכונה.
  • הרשאה נדחתה: יש בעיה בהרשאת שקע או קובץ.

4. שקע PHP-FPM או בקרת יציאות

Nginx מתחבר ל-PHP-FPM דרך שקע או יציאה. נתיב PHP-FPM בקובץ התצורה של Nginx וערך ההאזנה בפועל של PHP-FPM חייבים להיות זהים.

grep -R "fastcgi_pass" /etc/nginx/sites-enabled/
grep -R "listen =" /etc/php/*/fpm/pool.d/www.conf

לדוגמה אם Nginx משתמש ב:

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

יש להאזין לאותו שקע בצד PHP-FPM:

listen = /run/php/php8.2-fpm.sock
חשוב: אם גרסת ה-PHP השתנתה, ייתכן ש-Nginx עדיין מסתכל על נתיב שקע ה-PHP-FPM הישן. זוהי אחת הסיבות הנפוצות ביותר לשגיאות 502.

5. הגדלת הגדרות הזמן הקצוב

שגיאות 504 עשויות להתקבל בלוחות עיבוד גדולים, בשווקי משחק, ממשקי API או סקריפטים של PHP הפועלים לאט. ניתן להגדיל את ערכי הזמן הקצוב של Nginx.

nano /etc/nginx/nginx.conf

ניתן להוסיף את הערכים הבאים לבלוק http או לבלוק השרת הרלוונטי:

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
fastcgi_read_timeout 300;

בדוק את ההגדרות והפעל מחדש את Nginx:

nginx -t
systemctl restart nginx

6. בדיקת מגבלות תהליך PHP-FPM

כאשר התעבורה גדלה, מגבלות עסקאות PHP-FPM עשויות להיות לא מספיקות. במקרה זה, הבקשות מוצבות בתור ומתרחש פסק זמן.

nano /etc/php/8.2/fpm/pool.d/www.conf

הגדרות לדוגמה:

pm = dynamic
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

יש להתאים ערכים אלו בהתאם לכמות ה-RAM של השרת. הגדרת ערך גבוה מדי מגדילה את צריכת ה-RAM.

טעויות נפוצות

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

שאלות נפוצות

האם שגיאת 502 נגרמת תמיד על ידי Nginx?
לא. Nginx הוא רק זה שמציג את השגיאה. ייתכן שהבעיה האמיתית היא ב-PHP-FPM, ב-Apache backend, ביישום Node.js או בשירות אחר.

האם הגדלת הזמן הקצוב היא הפתרון הסופי לשגיאות 504?
לא תמיד. הגדלת הזמן הקצוב מספקת הקלה זמנית. הפתרון האמיתי הוא למצוא את השאילתה האיטית, העיבוד הכבד או בעיית הביצועים.

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

המלצות ביצועים

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

מאמר זה הוכן במיוחד עבור PvPServer.

Bu cevap yeterince yardımcı oldu mu?

Oyla

overlay spinner