2009-10-30 5 views
9

यह हैलोवेन सब के बाद।ज़ोंबी धागे मेरे दिमाग खाने (जे 2 ईई, टोमकैट, हाइबरनेट, क्वार्ट्ज)

यहां समस्या है: मैं क्वार्ट्ज का उपयोग करके कुछ पुराने-आईएसएच जे 2 ईई कोड को बनाए रख रहा हूं, जिसमें मैं धागे से बाहर निकल रहा हूं। jconsole मुझे बताता है कि जब यह नाशपाती के आकार में जाता है तो 60K धागे से कम होते हैं, जिनमें से लगभग 100 (!!) वास्तव में चल रहे हैं। अंतर्ज्ञान और कुछ googling (here देखें) सुझाव देते हैं कि क्या हो रहा है कुछ है (मैं क्वार्ट्ज सट्टेबाजी कर रहा हूं) अप्रबंधित धागे बना रहा है जो कभी भी साफ नहीं हो जाता है।

कई subquestions:

  1. यह एक ऐसा टूल है कि मैं आसानी से उपयोग कर सकते हैं धागा निर्माण का पता लगाने में, तो मैं कुछ किया जा सकता है इस मुद्दे को वास्तव में क्वार्ट्ज है?

  2. इसी तरह की समस्याओं के बारे में मुझे जो कुछ भी मिला है, वह वेबलॉगिक संदर्भ है; क्या यह टोमकैट के लिए झूठा सीसा है?

  3. क्या किसी के पास कोई ज्ञात समाधान है?

यह जेईईई करने के बाद से सालों से हुआ है, इसलिए अगर मैं ऐसा कुछ हल कर सकता हूं तो मुझे आश्चर्य नहीं होगा।

अद्यतन: यह स्पष्ट रूप से बाध्य बिना धागे बढ़ती है, JConsole से इस साजिश को देखते हैं।

They're dead, Jim http://i35.tinypic.com/33vnarn.png

+0

क्या आप धागे के नामों में कोई पैटर्न देखते हैं?मैं समस्या को निलंबित कर दूंगा जो क्वार्ट्ज का उपयोग करता है, शीर्षक के लिए क्वार्ट्ज स्वयं –

+8

+1 नहीं, मुझे वह सब कुछ बताता है जो मुझे जानने की आवश्यकता है। क्या आपने शॉटगन की कोशिश की? – Anthony

+0

मैट, मैं वास्तव में जेईई डीबगिंग टूल के साथ पुराना हूं (केवल सिफारिशों के लिए एक अलग सवाल पूछा: http://stackoverflow.com/questions/1650881/state-of-the-art-in-j2ee-debugging-and -मोनिटरिंग-टूल्स/1650 9 22 # 1650 9 22) इसलिए मैंने अभी तक नहीं किया है। लेकिन एक ज्ञात क्वार्ट्ज बग है जो इसे अप्रबंधित धागे को जन्म देती है। –

उत्तर

4
  • प्रयास करें और अधिक जानकारी प्राप्त करने के लिए डिबग करने के लिए org.quartz.simpl.SimpleThreadPool की लॉगिंग स्तर को बढ़ाने के लिए।

  • यदि यह काम नहीं करता है, तो लॉगिंग श्रोता का प्रयास करें। क्वार्ट्ज में जॉबलिस्टर इंटरफ़ेस है, जिसे tutorial में निर्दिष्ट किया गया है। एक श्रोता आपको नौकरी निष्पादन का पता लगाने में मदद कर सकता है। हो सकता है कि नौकरियां सिर्फ खत्म न हों और मृत हो जाएं।

  • धागे से बाहर निकलने के लिए org.quartz.threadPool.threadCount कॉन्फ़िगर करें।

अद्यतन:

  • इसके अलावा, आप एक धागा डंप लेने के लिए और धागा आंकड़े देखने के लिए चाहते हो सकता है। visual vm में टीडीए नामक एक प्लगइन है, या आप सीधे Thread dump analyzer का उपयोग कर सकते हैं।

  • बस मामले में, क्वार्ट्ज संस्करण को जांचने के लिए जांचें कि कोई ज्ञात बग नहीं है या नहीं।

+0

मार्सेलो, जोकनोल प्लॉट दिखाता है कि थ्रेड स्पष्ट रूप से बढ़ रहे हैं। हम्म, मुझे उस तस्वीर को शामिल करना चाहिए। –

0

क्या आपने jvisualvm के साथ एक नज़र डाली है - यह कुछ और जानकारी देता है।

इसके अलावा, यह देखने के लिए स्टैक निशान प्राप्त करें कि वास्तव में धागे क्या इंतजार कर रहे हैं। आपको वहां एक अह-महसूस हो सकता है।