מדריך מאמרים
האם גילית לפתע בעבודה שהשימוש במעבד של Nginx זינק? כדי להחמיר את המצב, תהליכי העבודה המרובים של Nginx צורכים משאבים בטירוף בכל פעם שאני מסתכל על התהליכים.
כשראיתי את הסצנה הזו, הראש שלך מתחמם ואתה לא יכול שלא לצעוק: "אוי אלוהים, האם השרת עומד להתפוצץ, זה לא אומר שהשרת שלך הולך להיות "גמור", אבל Nginx אנחנו צריכים אותך לעשות אופטימיזציה מקיפה!
ניתוח הגורמים לעומס מופרז של Nginx

ראשית, עלינו להבין,מדוע Nginx הופך פתאום ל"מותש"?ישנן סיבות רבות לבעיה, אל תפחדו, בואו נגלה יחד למטה.
1. תצורה לא סבירה
בקובץ התצורה של Nginx, הנקודה החשובה ביותר היא worker_processes. פרמטר זה קובע את מספר התהליכים שהתחילו על ידי Nginx.
- אם תגדיר מעט מדי תהליכי עבודה, עומס המעבד יזנק אם תגדיר יותר מדי, לא יהיה מספיק זיכרון.
- אתה צריך למצוא נקודת איזון, למשל,הגדר את worker_processes לפי 1 עד 2 ממספר ליבות המעבד.
- אם יש לך 4 ליבות אז נסה
worker_processes 4או הגדר אותו ישירות לauto.
2. הביקורים עלו
לפעמים, העומס של Nginx עולה פתאום לא בגלל שעשית טעות, אלא בגלל שמספר הביקורים גבוה מדי.בקשות גישה בו זמנית מאוד יגרמו לתהליך העובד של Nginx להיות מוצף., כל תהליך עמוס, וגם המעבד והזיכרון מלאים. בשלב זה, ייתכן שיהיה עליך לשפר את משאבי השרת, כגון הגדלת מספר ליבות המעבד או הגדלת הזיכרון. כמובן, זו גם תזכורת: אל תשכח לשקול הורדת CDN או איזון עומסים.
3. נתקל בהתקפות זדוניות
להיות "מאוד פופולרי" באינטרנט זה לא תמיד דבר טוב התקפות זדוניות עלולות לכוון אותך בכל עת. אם אתה מגלה שהשימוש במעבד גבוה באופן חריג ומקור ה-IP של הבקשה חשוד, סביר מאוד להניח שהאתר שלך סובל ממתקפת DDoS. בזמן הזה,עליך לפרוס חומת אש או להגביל את תדירות הגישה באופן מיידי, כגון שימוש במודול המגביל הנוכחי שמגיע עם Nginx, או הגדרת רשימה שחורה של IP.
כיצד לפתור את הבעיה של שימוש גבוה בזיכרון בתהליך Nginx?
אז השאלה היא, מדוע תהליך העובד של Nginx תופס כל כך הרבה משאבים? עלינו להתחיל עם התצורה ולמטב אותה צעד אחר צעד.
שיטת תצורה
פתח את קובץ התצורה של Nginx: בדרך כלל, קובץ התצורה הראשי של Nginx נמצא ב
/etc/nginx/nginx.conf.להכין
worker_processes: נמצא בקובץ תצורהeventsבלוקים, הגדרותworker_processesעֵרֶך. אִם לֹאeventsלחסום, אתה צריך ליצור אחד.nginx events { worker_connections 1024; use epoll; # 或者适用于操作系统的其他事件模型 }
1. הגדר כראוי worker_connections
nginx worker_connections הפרמטר קובע את המספר המרבי של חיבורים שכל תהליך עובד יכול להתמודד. אם הוא קטן מדי, זה ישפיע על ביצועי במקביל אם הוא גדול מדי, הוא עלול לצרוך יותר מדי משאבים.
כיצד לחשב את הערך המתאים?
בהנחה שיש לך מעבד 4 ליבות ו-16GB של זיכרון RAM, נקודת התחלה בטוחה היא worker_connections 4096.
אבל אם לאתר שלך יש הרבה תנועה, שקול להגדיל את הערך הזה ל-8192 כדי להבטיח שכל תהליך יוכל להתמודד עם מספיק בקשות.
events {
worker_connections 8192;
}
בדרך זו, כוח העיבוד של Nginx ישתפר מאוד.
2. התאם את Keepalive_timeout
פרמטר מפתח נוסף עבור Nginx לטיפול בבקשות הוא keepalive_timeout.
הגדרה זו קובעת כמה זמן ניתן לשמור על החיבור של הלקוח לשרת.
אם מוגדר ארוך מדי, הוא יתפוס משאבי חיבור רבים מדי..
אתה יכול לנסות keepalive_timeout הגדר ל-15 שניות כדי לשמור על החיבור ולשחרר משאבים.
keepalive_timeout 15;
3. בצע אופטימיזציה של מגבלות מתאר קבצים
כברירת מחדל,לינוקס למערכת יש הגבלה על מספר מתארי הקבצים שניתן לפתוח בכל תהליך.
אם Nginx צריך לעבד מספר רב של קבצים (כגון משאבים סטטיים), ייתכן שתראה שגיאה מ-Nginx, המבקשת "too many open files".
אתה יכול לעבור worker_rlimit_nofile הגדל את מגבלת מתאר הקבצים, למשל מוגדר ל-65535.
worker_rlimit_nofile 65535;
4. אפשר מטמון ו-gzip
מטמון ודחיסה הם שני מפתחות לאופטימיזציה של ביצועי האתר.
על ידי הפעלת פונקציית המטמון של Nginx, ניתן לאחסן משאבים סטטיים (כגון תמונות וקובצי JS) בזיכרון., ובכך להפחית מאוד את העומס על השרת.
בנוסף, הפעלת פונקציית הדחיסה של gzip יכולה להפחית את כמות הנתונים המועברים ולשפר את מהירות האתר.
gzip on;
gzip_types text/plain application/javascript;
5. נתח את השימוש במשאבי Nginx
לבסוף, אם השלמת את כל האופטימיזציות לעיל אבל Nginx עדיין תופסת הרבה מעבד, ייתכן שתצטרך להשתמש בכמה כלים לניתוח מעמיק.
使用 top או htop הצג את צריכת המשאבים בזמן אמת של תהליך,לַעֲבוֹר strace מעקב אחר שיחות מערכת, או שימוש nmon הפקת דוחות ביצועים. רק על ידי ניתוח מקיף של הפעולה בפועל של Nginx נוכל לבצע כוונון מדויק יותר.
总结
אל תיכנס לפאניקה כאשר השימוש במעבד של Nginx מתגבר. ייתכן שזה נגרם רק מתצורה לא נכונה או תנועה מוגזמת.
באמצעות התאמות סבירות worker_processes ו - worker_connectionsעל ידי הפעלת שמירה במטמון, אופטימיזציה של פסקי זמן ומתארי קבצים, אתה יכול להפחית משמעותית את לחץ הטעינה על Nginx.
Nginx הוא שרת אינטרנט רב עוצמה שכאשר הוא מותאם כראוי, יכול לספק ביצועים מצוינים לאתר שלך.
זכור, ניתן לענות על כל שאלה על ידימדעשיטות לפתור את זה, אופטימיזציה של ביצועי השרת אינה יוצאת דופן.
לפקח ולהתאים בזמן, הוא המפתח לשמירה על הפעלת Nginx ביעילות. אם אתה יכול לשלוט בטכניקות אלו, האתר שלך יהיה בטוח גם מול תעבורה גבוהה או התקפות זדוניות.
אני מקווה שמאמר זה נתן לך השראה, הזדרז וייעל את ה-Nginx שלך!
Hope Chen Weiliang בלוג ( https://www.chenweiliang.com/ ) shared "מה עלי לעשות אם עומס המעבד של שרת Nginx ושימוש בזיכרון התהליך גבוהים?" 》, עוזר לך.
מוזמנים לשתף את הקישור של מאמר זה:https://www.chenweiliang.com/cwl-32093.html
