יש לי שרת ב Nodejs.
מחוברים אליו מאות קליינטים.
זה קרה לי באופן פתאומי, הזיכרון של התהליך התנפתח מאוד, עד שהגיע לכמויות גבוהות, מעל 1 GB. וה PM2 עשה לו ריסטרט.
זה היה לפני הרבה זמן. מאז פיצלתי את השרת לכמה עותקים (על אותה המכונה), וכל קבוצת קליינטים ניגשת לשרת אחר.
עשיתי לאחרונה איזשהו עדכון ומאז הזיכרון של השרתים התחיל שוב לקפוץ.
אבל לא ברור לי למה. זה לא קורה תמיד. הזיכרון של כל תהליך הוא בדר"כ באיזור 250 MB. ולפעמים יש לו קפיצות עד 700MB שהוא יכול להשתחרר מהם לבד. ולפעמים הוא עובר את ה 1 GB ונופל ע"י ה PM2.
מטרת השאלה שלי היא, מה לדעתכם יכול בעיקר לגרום לבעיות זיכרון כאלו.
האם עצם זה שיש בקשות http רבות יכול לגרום לעומס זיכרון?
האם זה שיש websocket מול כל הקליינטים יכול לגרום לעומס זיכרון?
זה שיש הרבה קריאות ל DB יכול להשפיע על הזיכרון של השרת?
כי לא שיניתי הרבה, יש רק פונקציה אחת שהשתנתה. והיא פונקציה שרצה בשביל כל קליינט, אחת או פעמיים לדקה. נניח שעל כל שרת יש אפילו 300 קליינטים פעילים (משהו שלא נראה לי סביר. אלא אולי 150). הפונקציה מריצה כמה שאילתות ב DB, ועושה כמה לולאות. לא משהו חריג בכלל.
עריכה: גם ה CPU יכול לעלות במקביל ל RAM.