דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. שרת בNode Js - זיכרון מתנפח

שרת בNode Js - זיכרון מתנפח

מתוזמן נעוץ נעול הועבר תכנות
11 פוסטים 4 כותבים 481 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מנצפךמ מנותק
    מנצפךמ מנותק
    מנצפך
    כתב ב נערך לאחרונה על ידי
    #1

    יש לי שרת ב- nodeJS.
    פלטפורמה של sails.js
    (epxress עם כל מיני תוספות).
    מופעל ע"י pm2
    הזיכרון שלו בשעות הפעילות עומד על כ- 200 MB.
    בשעות הלילה על כ 150 MB.
    לעיתים נדירות קורה שהזיכרון מתחיל להתנפח למימדים מבהילים.
    עד 1 GB !! ושם ה pm2 מפיל את השרת.
    השרת מופעל מחדש ומיד מתנפח שוב.
    כמובן שהמשתמשים חווים איטיות גדולה בשרת.

    איך אני יכול להתמודד עם זה?

    דבר ראשון, איך לעשות debug ב nodeJS בדגש על שרת מרוחק.

    מה עוד ממליצים לעשות?

    אציין שה sessions וה- sockets נשמרים ב redis.
    אבל בסה"כ מדובר באיזור 300 חיבורים מקסימום.

    תגובה 1 תגובה אחרונה
    1
    • מנצפךמ מנותק
      מנצפךמ מנותק
      מנצפך
      כתב ב נערך לאחרונה על ידי
      #2

      מה אומר @dovid ?

      תגובה 1 תגובה אחרונה
      0
      • M מנותק
        M מנותק
        magicode
        כתב ב נערך לאחרונה על ידי magicode
        #3

        @מנצפך אמר בשרת בNode Js - זיכרון מתנפח:

        איך אני יכול להתמודד עם זה?
        דבר ראשון, איך לעשות debug ב nodeJS בדגש על שרת מרוחק.
        מה עוד ממליצים לעשות?
        אציין שה sessions וה- sockets נשמרים ב redis.
        אבל בסה"כ מדובר באיזור 300 חיבורים מקסימום.

        תוסיף את הזה לראש הקוד.

        require('heapdump');
        

        שהשרת מתנפח אתה שולח הודעת USR2 לתהליך. דרך שורת הפקודה.

        $ kill -USR2 <pid>
        

        ואז נוצר לך קובץ DUMP בתקית CWD של התוכנה. ואתה יכול לפתוח את הקובץ הזה בכלי המפתחים של כרום. ולראות מה תופס זיכרון.

        תגובה 1 תגובה אחרונה
        5
        • מנצפךמ מנותק
          מנצפךמ מנותק
          מנצפך
          כתב ב נערך לאחרונה על ידי
          #4

          מה הפקודה עושה?
          הורגת את התהליך?

          yossizY תגובה 1 תגובה אחרונה
          0
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב למנצפך ב נערך לאחרונה על ידי
            #5

            @מנצפך זה סוג של מסר שנשלח לתהליך (signal). גם הריגת תהליך נעשית (בלינוקס\יוניקס) ע"י שליחת מסר לתהליך, בגלל זה שם הפקודה הוא kill.

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            תגובה 1 תגובה אחרונה
            0
            • מנצפךמ מנותק
              מנצפךמ מנותק
              מנצפך
              כתב ב נערך לאחרונה על ידי
              #6

              מעניין.
              זה הרג לי את התהליך.
              אבל בטרמינל הוא נשאר בפנים.
              מוזר.

              yossizY תגובה 1 תגובה אחרונה
              0
              • yossizY מנותק
                yossizY מנותק
                yossiz
                השיב למנצפך ב נערך לאחרונה על ידי yossiz
                #7

                @מנצפך אמר בשרת בNode Js - זיכרון מתנפח:

                אבל בטרמינל הוא נשאר בפנים.

                ?

                אולי זה יעזור?

                נ"ל שאם מאיזה סיבה שהוא, התהליך לא מטפל ב-signal אז התהליך נהרג ע"י מערכת ההפעלה. השורה require('heapdump'); אמור לגרום לתהליך node לרשום handler שיטפל ב-SIGUSR2.

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                תגובה 1 תגובה אחרונה
                3
                • מנצפךמ מנותק
                  מנצפךמ מנותק
                  מנצפך
                  כתב ב נערך לאחרונה על ידי
                  #8

                  יש בתהליך הרבה מודולים נפרדים.
                  עם export.
                  איפה אני צריך לקרוא ל heapdump?

                  תגובה 1 תגובה אחרונה
                  0
                  • מנצפךמ מנותק
                    מנצפךמ מנותק
                    מנצפך
                    כתב ב נערך לאחרונה על ידי מנצפך
                    #9

                    אני גם לא מוצא את ידי ורגלי בקובץ הזה.
                    מאיפה להתחיל?

                    איך רואים כמה זיכרון לוקח כל אובייקט?

                    א תגובה 1 תגובה אחרונה
                    0
                    • א מנותק
                      א מנותק
                      אהרן
                      השיב למנצפך ב נערך לאחרונה על ידי
                      #10

                      @מנצפך
                      הסתדרת?
                      מעניין לנסות א"ז גם.

                      מנצפךמ תגובה 1 תגובה אחרונה
                      0
                      • מנצפךמ מנותק
                        מנצפךמ מנותק
                        מנצפך
                        השיב לאהרן ב נערך לאחרונה על ידי
                        #11

                        @אהרן בסוף הבעיה היתה קשורה כנראה לסשנים.
                        מחקתי את כל הסשנים (היו שמורים ב redis) ומאז זה הסתדר.
                        לא יודע בדיוק מה היתה הבעיה.

                        אבל אשמח לדעת איך לדבג.

                        אגב, מה שעשיתי זה הוספתי קוד לשרת שכשאני פונה לכתובת מסויימת הוא יותר לי קובץ dump. זה חלק מהספרייה heapdump.

                        תגובה 1 תגובה אחרונה
                        2

                        בא תתחבר לדף היומי!
                        • התחברות

                        • אין לך חשבון עדיין? הרשמה

                        • התחברו או הירשמו כדי לחפש.
                        • פוסט ראשון
                          פוסט אחרון
                        0
                        • דף הבית
                        • קטגוריות
                        • פוסטים אחרונים
                        • משתמשים
                        • חיפוש
                        • חוקי הפורום