2013-04-03 4 views
8

बस कोई अनुरोध नहीं के साथ बैठे, मुझे स्मृति मिलती रहती है, अंत में स्मृति कोटा पार हो जाती है। ऐसी कई चीजें हैं जिन्हें मैं समझ नहीं पा रहा हूं।अप्रयुक्त होने पर भी मेमोरी कोटा को हेरोकू पर त्रुटियों से अधिक क्यों मिल रहा है? (play2/scala)

  1. कोई अनुरोध नहीं होने पर स्मृति उपयोग क्यों बढ़ता रहता है?
  2. "प्रोसेस रनिंग मेम" का मूल्य कहां से आता है (यह ढेर और गैर-ढेर उपयोग से संख्याओं के किसी भी संयोजन का योग नहीं है जो मैं बता सकता हूं)।
  3. मेरे पास JAVA_OPTS: -Xmx384m -Xss512k -XX:+UseCompressedOops -javaagent:heroku-javaagent-1.2.jar=stdout=true अनुशंसित होने के बावजूद यह क्यों पार हो जाता है?

यहाँ लॉग फ़ाइल

app/web.1: heroku-javaagent: JVM Memory Usage  (Heap): used: 275M committed: 349M max:349M 
app/web.1: heroku-javaagent: JVM Memory Usage (Non-Heap): used: 37M committed: 37M max:219M 
app/web.1: heroku-javaagent: JVM Threads    : total: 37 daemon: 7 non-daemon: 21 internal: 9 
app/web.1: heroku-javaagent: JVM Memory Usage  (Heap): used: 276M committed: 349M max:349M 
app/web.1: heroku-javaagent: JVM Memory Usage (Non-Heap): used: 37M committed: 37M max:219M 
app/web.1: heroku-javaagent: JVM Threads    : total: 37 daemon: 7 non-daemon: 21 internal: 9 
app/web.1: heroku-javaagent: JVM Memory Usage  (Heap): used: 277M committed: 349M max:349M 
app/web.1: heroku-javaagent: JVM Memory Usage (Non-Heap): used: 37M committed: 37M max:219M 
app/web.1: heroku-javaagent: JVM Threads    : total: 37 daemon: 7 non-daemon: 21 internal: 9 
app/web.1: heroku-javaagent: JVM Memory Usage  (Heap): used: 277M committed: 349M max:349M 
app/web.1: heroku-javaagent: JVM Memory Usage (Non-Heap): used: 37M committed: 37M max:219M 
app/web.1: heroku-javaagent: JVM Threads    : total: 37 daemon: 7 non-daemon: 21 internal: 9 
app/web.1: heroku-javaagent: JVM Memory Usage  (Heap): used: 278M committed: 349M max:349M 
app/web.1: heroku-javaagent: JVM Memory Usage (Non-Heap): used: 37M committed: 37M max:219M 
app/web.1: heroku-javaagent: JVM Threads    : total: 37 daemon: 7 non-daemon: 21 internal: 9 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
app/web.1: heroku-javaagent: JVM Memory Usage  (Heap): used: 212M committed: 349M max:349M 
app/web.1: heroku-javaagent: JVM Memory Usage (Non-Heap): used: 37M committed: 37M max:219M 
app/web.1: heroku-javaagent: JVM Threads    : total: 37 daemon: 7 non-daemon: 21 internal: 9 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
app/web.1: heroku-javaagent: JVM Memory Usage  (Heap): used: 213M committed: 349M max:349M 
app/web.1: heroku-javaagent: JVM Memory Usage (Non-Heap): used: 37M committed: 37M max:219M 
app/web.1: heroku-javaagent: JVM Threads    : total: 37 daemon: 7 non-daemon: 21 internal: 9 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
app/web.1: heroku-javaagent: JVM Memory Usage  (Heap): used: 213M committed: 349M max:349M 
app/web.1: heroku-javaagent: JVM Memory Usage (Non-Heap): used: 37M committed: 37M max:219M 
app/web.1: heroku-javaagent: JVM Threads    : total: 37 daemon: 7 non-daemon: 21 internal: 9 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
app/web.1: heroku-javaagent: JVM Memory Usage  (Heap): used: 214M committed: 349M max:349M 
app/web.1: heroku-javaagent: JVM Memory Usage (Non-Heap): used: 37M committed: 37M max:219M 
app/web.1: heroku-javaagent: JVM Threads    : total: 37 daemon: 7 non-daemon: 21 internal: 9 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 
heroku/web.1: Process running mem=517M(101.1%) 
heroku/web.1: Error R14 (Memory quota exceeded) 

उत्तर

5

का एक नमूना यह समस्या Heroku के लिए विशिष्ट नहीं होना चाहिए और चाहिए (आदर्श) स्थानीय स्तर पर पुनः प्रस्तुत किया जाना करने में सक्षम हो सकता है। सबसे पहले, मैं अपने अनुप्रयोग स्थानीय स्तर पर एक ही तरह से चल रहा है Heroku इसे चलाता सिफारिश करेंगे: target/start लांचर

  • लॉन्च बनाने के लिए

    target/start -Dhttp.port=$PORT $JAVA_OPTS (जो कुछ भी करने के लिए आप चाहते हैं सेट पोर्ट) के साथ अपने ऐप

    फिर मैं एक मेमोरी प्रोफाइलर का उपयोग करूंगा, जैसे कि VisualVM, यह देखने के लिए कि आपका क्या चल रहा है, स्थानीय रूप से चल रहे ऐप से जुड़ा हुआ है।

    यदि यह काम नहीं करता है या आप हेरोकू पर स्मृति उपयोग का बेहतर टूटना चाहते हैं, तो मैं log-runtime-metrics सक्षम करने की अनुशंसा करता हूं। रीयलटाइम मेमोरी विज़ुअलाइज़ेशन प्राप्त करने के लिए इसका उपयोग Log2Viz के साथ भी किया जा सकता है।

  • 0

    सक्षम करें लॉग-क्रम-मीट्रिक Heroku में:

    $ heroku labs:enable log-runtime-metrics 
    Enabling log-runtime-metrics for myapp... done 
    $ heroku restart 
    

    यह आपको लॉग

    heroku logs -t 
    

    https://devcenter.heroku.com/articles/log-runtime-metrics

    +0

    -1 छह महीने पहले से दूसरे उत्तर में इसका पहले ही उल्लेख किया गया था और कोई अतिरिक्त मूल्य नहीं जोड़ा गया है। –

    +0

    पर्याप्त मेला पर्याप्त आखिरी वाक्य को याद किया। – Skeep

    0

    मैं में एक ही त्रुटि संदेश है में दृश्य स्मृति उपयोग कर सकेंगे grails आवेदन, मैं इसे article पढ़ा था समाधान आसान था system.property रूट में फ़ाइल इस java.runtime.version के साथ फ़ोल्डर = 1.7 सामग्री के रूप में, तो मैं आवेदन और त्रुटि R14 पुनर्वितरित इसकी चला गया

    मैं आशा है कि यह उपयोगी

    2

    बस एक समान समस्या थी है। मैं स्थानीय रूप से समस्या को पुन: उत्पन्न करने में सक्षम नहीं था। यह पता चला कि हमारे लॉगिंग कॉन्फ़िगरेशन में हमारे पास फ़ाइल एपेंडर था। लॉग को लिखने से स्मृति बढ़ जाती है। आप इसे सत्यापित कर सकते हैं, एक छोटा ऐप लिखकर जो बहुत लॉग करता है। यदि आप लॉग-रनटाइम-मेट्रिक्स सक्षम करते हैं, तो आपको memory_cache और memory_total बढ़ने लगेगा।

    +0

    क्या आप अपनी लॉगिंग कॉन्फ़िगरेशन पर अधिक जानकारी साझा कर सकते हैं? क्या ऐसा होने से रोकने के लिए हेरोकू कुछ भी कर सकता है? – codefinger

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

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