2014-09-28 10 views
5

मेरा ऐप 5 समानांतर डायनोस पर हैरोकू पर चल रहा है और चल रहा है। 25-15/सेकेंड तक 500-1500 रिक/मिनट का निरंतर भार होता है। समस्या यह है कि आरएसएस मेमोरी लगातार बढ़ रही है। जब मेमोरी खतरनाक स्तर तक पहुंच जाती है तो अब मैं मैन्युअल रूप से ऐप को पुनरारंभ कर रहा हूं (1 हेरोकू डिनो द्वारा उपयोग की जाने वाली अधिकतम मेमोरी 512 एमबी है)। मेमोरी चार्ट लग रहा है इस तरह (ऊपरी ग्रे अक्ष 512MB सीमा पर है):herode पर node.js वेब सर्वर - निरंतर स्मृति

enter image description here

लम्हें (चार्ट पर) जब स्मृति जारी किया गया है कर रहे हैं जब मैं एप्लिकेशन को पुन: प्रारंभ कर रहा हूँ।

अजीब बात यह है कि यह तब होता है जब सर्वर पर लगातार लोड होता है। उदाहरण के लिए सर्वर पर 2 मिनट लोड होने पर स्मृति बढ़ जाती है और उसके बाद फिर से नीचे जाती है। तो ऐसा लगता है कि किसी कारण से कचरा कलेक्टर ठीक से काम नहीं कर रहा है (यह सर्वर लोड होने तक कचरा इकट्ठा नहीं कर रहा है और ऐप व्यस्त नहीं है)।

क्या मैं इसके बारे में कुछ भी कर सकता हूं? यह स्मृति रिसाव मुझे लगता है कि क्योंकि स्मृति जब वहाँ एक सर्वर पर कोई बोझ है जारी किया गया है ... नहीं है

क्या मैं अब तक की कोशिश की थी:

  1. कॉल जीसी मैन्युअल 2 मिनट के अंतराल
  2. सेटिंग में --मैक्स-पुरानी-अंतरिक्ष-आकार = 300 हालांकि स्मृति 300 एमबी हिट होने पर कुछ भी नहीं होता - यह अभी भी बढ़ रहा है।

शायद अन्य विकल्प भी मदद कर सकते हैं?

नोड संस्करण 0.10.20


मैं नोड memwatch पैकेज का इस्तेमाल किया और मैं app से ढेर डिफ इकट्ठा करने में कामयाब रहे है:

तो मुझे लगता है कि इस प्रकार का रिसाव होना चाहिए। पहले diff से सबसे बड़ी स्मृति परिवर्तन:

 ... 
     { 
      "what": "Array", 
      "size_bytes": 9320312, 
      "size": "8.89 mb", 
      "+": 79086, 
      "-": 10215 
     }, 
     ... 
     { 
      "what": "Closure", 
      "size_bytes": 2638224, 
      "size": "2.52 mb", 
      "+": 36826, 
      "-": 184 
     }, 
     { 
      "what": "Native", 
      "size_bytes": 21471232, 
      "size": "20.48 mb", 
      "+": 546, 
      "-": 0 
     }, 
     { 
      "what": "String", 
      "size_bytes": 2068264, 
      "size": "1.97 mb", 
      "+": 36968, 
      "-": 1223 
     }, 
     ... 

क्या Native वस्तु (वह 20 MB मेम आवंटित!) है? क्या आप मुझे सलाह दे सकते हैं कि रिसाव के कारण वास्तव में क्या जांच हो रही है?

उत्तर

1

समस्या पोस्टग्रेज़ मूल बाइंडिंग (https://github.com/brianc/node-postgres#native-bindings) का उपयोग न करने से तय की गई थी। जब मैंने मूल बाइंडिंग का उपयोग करना बंद कर दिया (मैं Sequelize.js का उपयोग कर रहा हूं, इसलिए मैंने native ध्वज को झूठ में बदल दिया) स्मृति सामान्य रूप से व्यवहार करना शुरू कर दिया ...

ऐसा लगता है कि पीजी देशी बाइंडिंग में रिसाव हो सकता है?

संबंधित मुद्दे