2010-04-25 14 views
21

डिफ़ॉल्ट रूप से वेबलोगिक 15 मिनट (600 एस) के बाद थ्रेड फेंक देता है, यह StuckThreadMaxTime पैरामीटर द्वारा नियंत्रित होता है। हालांकि, मुझे "अटकलें" को परिभाषित करने के तरीके के बारे में अधिक जानकारी नहीं मिल रही है। विशेष रूप से:वेबलॉगिक थक संरक्षण

  • वह बिंदु क्या है जिस पर 15 मिनट उलटी गिनती शुरू होती है। अनुरोध प्रसंस्करण शुरू? अंतिम wait()-जैसी विधि? कुछ और?
  • क्या यह केवल अनुरोध-प्रसंस्करण धागे या सभी धागे पर लागू होता है? अर्थात। क्या एक अनुरोध-प्रसंस्करण धागा एक लंबे कार्य के लिए एक कार्यकर्ता थ्रेड को बढ़ाकर इस सुरक्षा को "बचाना" कर सकता है? विशेष रूप से, क्या यह 15 मिनट उलटी गिनती के बिना ऐसे कार्यकर्ता को प्रतिक्रिया लिखने का प्रतिनिधि दे सकता है?

मेरा उपयोगकेस एक अनुमति प्रणाली के माध्यम से बड़ी फ़ाइलों का डाउनलोड है। चूंकि किसी उपयोगकर्ता को प्रमाणीकृत होने की आवश्यकता होती है और फ़ाइल देखने की अनुमति होती है, इसलिए मैं इसे सरल HTTP सर्वर पर छोड़ नहीं सकता (या कम से कम नहीं जानता) अमरीका की एक मूल जनजाति। और क्योंकि फाइलें बड़ी हो सकती हैं, डाउनलोड (कम से कम सिद्धांत में) 15 मिनट से अधिक समय ले सकता है।

उत्तर

21

वेबलॉगिक StuckThreadMaxTime के बाद फंसे धागे को मार डालो। ऐसा नहीं हो सकता है, संदेश केवल एक स्टेटस जानकारी है ताकि आप (यानी व्यवस्थापक) को पता हो कि धागा 10 मिनट (600 सेकंड = 10 मिनट, 15 नहीं)

यह एक कॉन्फ़िगर करने योग्य मान है।

टाइमर तब शुरू होता है जब थ्रेड सर्वर के भीतर अनुरोध को संसाधित करना शुरू करता है। धागा नहीं मारा जाएगा, लेकिन वास्तव में ऑपरेशन खत्म होने तक प्रसंस्करण पर जायेगा। इसलिए आपके मामले में, आपको थ्रेड होने के बारे में चिंता करने की आवश्यकता नहीं है, इसने आपको केवल उस समय के बारे में सूचित किया है - जिसे आप इस उपयोग के मामले में जानते हैं।

यह सभी धागे AFAIK पर लागू होता है - कोई भी स्पॉन्टेड थ्रेड उसी नियम के तहत भी काम करेगा।

आईएमएचओ, वेबलॉगिक (या कोई ऐप सर्वर) बड़ी फ़ाइलों को स्टोर और सेवा करने का स्थान नहीं है। यह आदर्श रूप से वेब सर्वर स्तर के लिए है - हम SunOne का उपयोग करते हैं जिस पर फ़ाइल डाउनलोड सर्वलेट चलाया जा सकता है। आपके मामले में, आपको इसे अनुकूलित करने के लिए अपने अपाचे के साथ टोमकैट की आवश्यकता होगी।

+0

ठीक है, लेकिन जैसा कि मुझे पता है कि यह पूरे एप्लिकेशन को फिर से तैनात कर सकता है यदि बहुत सारे थके हुए धागे हैं, नहीं? मेरे पास सत्र समय समाप्ति के साथ मिश्रित चीजें हो सकती हैं - हमें अतीत में कुछ समस्याएं थीं। फाइलों के बारे में - एप्लिकेशन इतना बड़ा और छोटी है कि अनुकूलित करने पर खर्च करने का कोई समय नहीं है क्योंकि हमेशा अधिक दबाव वाले मुद्दे होते हैं। – doublep

+6

यदि सर्वर बहुत सारे अटक गए धागे हैं तो सर्वर नए अनुरोधों का जवाब देना बंद कर देगा - लेकिन आपके मामले में वे वास्तव में 'अटक गए' नहीं हैं बल्कि लंबे अनुरोधों को संसाधित कर रहे हैं। एक बेहतर तरीका है FileDownloadServlet को अपना स्वयं का निष्पादित थ्रेड पूल देना - WL10 पर यह एक समर्पित वर्कमैनेजर होगा। यह सुनिश्चित करता है कि डाउनलोड में फंसे/प्रभावित किसी भी थ्रेड सामान्य सर्वर प्रसंस्करण के सामान्य अनुरोधों को प्रभावित नहीं करेगा। अधिक के लिए यहां देखें - http://download.oracle.com/docs/cd/E11035_01/wls100/config_wls/self_tuned.html#wp1059038। आप उस सर्वलेट के लिए प्रेषण नीति को परिभाषित कर सकते हैं। – JoseK

+0

उत्तर और स्पष्टीकरण के लिए धन्यवाद। – doublep

7

डब्ल्यूएलएस 10 वर्कमैनेजर दस्तावेज़ कुछ असली हेडक्रैचिंग का कारण बन सकता है। Weblogic.xml में वेबपैप के लिए वर्कमैनेजर को परिभाषित करने के तरीके के चरण-दर-चरण उदाहरण के लिए http://blogs.oracle.com/jamesbayer/2010/01/work_manager_leash_for_slow_js.html देखें और इसका उपयोग करने के लिए एक विशिष्ट सर्वलेट असाइन करें।

कि उदाहरण के लिए जोड़ा जा रहा है, तो आप <work-manager> परिभाषा जो एक असफल सर्वर राज्य के खिलाफ गिना जा रहा है कि WorkManager के लिए काम धागे रोकने चाहिए करने के लिए <ignore-stuck-threads>true</ignore-stuck-threads> जोड़ सकते हैं।

+1

बस जो मैं ढूंढ रहा था, धन्यवाद! –

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