2012-11-13 13 views
10

के साथ हेरोोकू मेमोरी लीक 20 कनेक्शन सीमा के साथ मेरे 1 heroku dyno और dev डेटाबेस में कुछ खिंचाव (एबी) परीक्षण कर रहा था।Play2 scala

कॉल दौरान

मैं समस्या को पुन नहीं कर पा रहे हैं (कम है कि स्तरों पर कम से कम स्थानीय स्तर पर) (squeryl के ढेर आवंटन के साथ कि पहुँच डेटाबेस R14 (स्मृति 512MB से अधिक) के कारण बढ़ रही है)।

क्या उसके पासोकू ढेर डंप पाने का कोई तरीका है और कुछ सुराग प्राप्त करने के लिए इसका विश्लेषण किया गया है?

क्या play2, scala, squeryl और heroku memory leak के साथ कोई ज्ञात समस्या है?

अद्यतन

मैं नियंत्रक के लिए सब कुछ के अंत में System.gc करते हैं ठीक है और धीमी ओएफसी हो रहा है ... मुझे लगता है कि कॉल पर वस्तु का एक बहुत बनाने के नहीं बल्कि Heroku के JVM लेना चाहिए जीसी की देखभाल? https://devcenter.heroku.com/articles/java-memory-issues

आपके मामले में, आप स्मृति विवरण देखने के लिए JAVA_OPTS को जीसी झंडे जोड़ सकते हैं: इसके अलावा अगर मैं जीसी कॉल शेड्यूल समय-समय पर नहीं मुक्त स्मृति

+0

क्या आप स्ट्रीमिंग (रिटर्न भाग) का उपयोग करते हैं? – Schleichardt

+0

नहीं, मैं नहीं करता हूं। अगर मैं नियंत्रक के अंत में System.gc करता हूं तो सबकुछ ठीक और धीमा हो सकता है ... मैं उस कॉल पर बहुत सारी वस्तुएं बनाता हूं लेकिन क्या उसे हेकोकस जेवीएम जीसी का ख्याल नहीं रखना चाहिए? अगर मैं समय-समय पर जीसी कॉल शेड्यूल करता हूं तो स्मृति मुक्त नहीं होता .. – weakwire

+0

क्या आप 'Procfile' में डिफ़ॉल्ट' JAVA_OPTS' का उपयोग कर रहे हैं? –

उत्तर

5

वहाँ Heroku पर समस्या निवारण स्मृति मुद्दों के लिए एक महान लेख है है। मैं निम्नलिखित झंडे सुझाव देंगे:

heroku config:add JAVA_OPTS="-Xmx384m -Xss512k -XX:+UseCompressedOops -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps"

वहाँ भी एक साधारण जावा एजेंट अगर आप अपनी स्मृति के बारे में JMX से कुछ और जानकारी की चाहते हैं कि आप अपने प्रक्रिया के लिए जोड़ सकते हैं। यदि आप अधिक गहराई में जाना चाहते हैं, तो आप नए अवशेष जैसे मॉडेन की निगरानी भी देख सकते हैं, लेकिन मुझे लगता है कि आपको झंडे और जावा एजेंट के साथ ठीक होना चाहिए।

0

मुझे यह समस्या भी थी, और उत्तर दिया here

मुझे एक ही समस्या थी। हेरोोक आपको बता रहा है कि मशीन मेमोरी के बाहर चल रही है, जावा वीएम नहीं। वास्तव में हेरोकू प्ले 2.2 परिनियोजन में एक बग है, स्टार्टअप स्क्रिप्ट java_opts को नहीं, java_opts को पढ़ती है।

मैं इसे दोनों की स्थापना द्वारा तय:

heroku config:add java_opts='-Xmx384m -Xms384m -Xss512k -XX:+UseCompressedOops' 
heroku config:add JAVA_OPTS='-Xmx384m -Xms384m -Xss512k -XX:+UseCompressedOops' 

मैं भी -Xms स्थापित करने के लिए किया था अन्यथा मैं मिनट कह त्रुटि मिली है और अधिकतम असंगत थे। मुझे लगता है कि Play2.2 384m से अधिक डिफ़ॉल्ट का उपयोग कर रहा था।

+0

FYI। यह अब एक समस्या नहीं है। एक प्ले 2.3 ऐप पर तैनात किया गया और उसने JAVA_OPTS जुर्माना उठाया। –