מה זה 502 Bad Gateway? ואיך לפתור את השגיאה

מה זה שגיאת 502 bad gateway?

רבים שואלים מה זה bad gateway 502? השגיאה 502 Bad Gateway מצביעה על כך שהשרת קיבל תגובה לא חוקית (או תגובה שהוא לא יכול להבין) משרת אחר. במאמר הזה נדון בארבע הסיבות השכיחות ביותר שעומדות מאחורי שגיאת 502 ומה אתם יכולים לעשות בכל סיטואציה. המאמר הזה יכסה את הבעיות הבאות:

  • עומס יתר על השרת
  • מגבלת הזמן של PHP נגמרה
  • כשל בשירות
  • תוסף או התנגשות בנושא

עומס יתר על השרת

כאשר שרת מתחיל להיות עמוס מדי, הביצועים שלו מתחילים להתדרדר. כתוצאה מכך, אתרי האינטרנט אשר מאוכסנים בו מתחילים להיטען לאט ובסופו של דבר, שגיאת 502 מופיעה.

העומס נוצר בגלל מספר סיבות, כגון שימוש מוגזם במעבד ובזיכרון. Cloudways מציעה כלי ניטור שרתים כדי לפשט את ניטור משאבי השרת. אם אתם מכירים את לינוקס, אתם יכולים לפקח על משאבי השרת באמצעות כלי שורת הפקודה כגון htop כדי לסקור את כל הנושאים ותהליכי השרת בזמן אמת.  סיבה נוספת לעומס יתר בשרתים היא כאשר יותר מדי מבקרים באתר גורמים ליותר מדי חיבורים למסד הנתונים. ככל שמספר זה עולה, השרת עמוס יותר. ניתן לנטר את חיבורי ה-MySQL על ידי כניסה לגרף ב-Monitoring.

bad gateway

יש אפשרות גם לנטר את ניצול משאבי MySQL באמצעות פקודות SSH כגון htop, פקודות aux ps ופקודת mytop [mytop -u {dbuser-name} -p {db-password} dbname)] כ- master_usert כדי לבדוק בזמן אמת את חיבורי MySQL שמבצעים שאילתות. כדי להתמודד עם בעיה זו, אתם יכולים לשקול להגדיל את מספר החיבורים המקסימליים של MySQL כדי להפחית את העומס שנוצר במסד הנתונים. לחלופין, אם אתם רואים שכל התנועה באתר היא לגיטימית, זה הזמן להגדיל את משאבי השרת כדי להתמודד עם מבקרי השרתים הגדלים.

שרתים יכולים להיות עמוסים מדי במקרה של התקפות כגון DoS / DDoS המתבצעות ממאגרי IP ספציפיים. כדי להתמודד עם התקפות מסוג זה, אתם יכולים לחסום כתובות IP מקובץ .htaccess באמצעות השורות הבאות (החליפו את כתובות ה-IP בפקודה שלמטה עם ה-IP שאתם צריכים לחסום):

502 bad gateway מה זה

עבודות cron ומשימות מתוזמנות המתבצעות לעתים קרובות צורכות חלק ניכר ממשאבי השרתים (בפרט ניצול גבוה של המעבד). כדי להתמודד עם בעיה זו, נסו לרווח את מחזורי ביצוע עבודות ה-cron לפחות ב-15 דקות.

מגבלת הזמן של PHP נגמרה

בדרך כלל כאשר לוקח זמן רב מדי לסקריפטים של PHP לביצוע ומגבלת הזמן שהוקצתה נגמרת, מופיעה שגיאה: Fatal Error: Maximum Execution Time Exceeded ביומן השגיאות של אפאצ'י. כדי למנוע שגיאה זו, עליכם להגדיל את ה-max_execution_time.

לשם כך עברו אל Server Settings & Packages ולחצו על Basic. בטאב הזה, הגדילו את הערך של ה-execution time. לאחר מכן עברו אל Application Settings ואז על PHP-FPM Settings. חפשו את השורה  ;php_admin_value[max_execution_time] והעלו את ערך הפרמטר. 

כשל בשירות

ה-stack שלנו משתמש ב-NGINX כ- reverse proxy שתלוי בשירותי backend כמו PHP-FPM ושירותי מטמון להפעלת אתרי אינטרנט. אם אחד מהשירותים קורס או עוצר, NGINX לא תקבל נתונים מהם, וכתוצאה מכך תופיע שגיאת 502 Bad Gateway. אם זה המקרה, הפתרון הוא פשוט: הפעילו מחדש את Apache, NGINX, PHP-FPM וניקוי המטמון שנמצאים ב-Manage Services.

הפעילו מחדש את Apache, NGINX, PHP-FPM וניקוי המטמון

תוסף / תבנית שגורמים לשגיאה

אם ניסיתם את שלוש האפשרויות שרשמנו מעלה, ושגיאת 502 עדיין נמשכת, ככל הנראה הבעיה נגרמת על ידי איזשהו תוסף/תבנית שמותקנת, גילוי התוסף שגורם לשגיאה יכול לקחת זמן, מאחר והתהליך כולל השבתה של כל התוספים והתבניות.
התהליך מתחיל בהפעלת תוספים בודדים ואז בדיקת האתר בדפדפן. אם השגיאה נמשכת, השביתו את התוסף הפעיל, הפעילו את התוסף הבא וכך הלאה. את אותו התהליך יש לעשות גם עבור התבניות. במקרים רבים, השבתת כל התבניות וחזרה לתבנית ברירת המחדל פותרים את הבעיה. לאחר שמצאתם את התוסף / התבנית שגורמים לבעיה, פנו למפתחים כדי להודיע ​​להם על כך.