IIS हर 1740 मिनट में एप्लीकेशन पूल को रीसायकल करने में चूक क्यों करता है?


22

IIS एक निश्चित समय के बाद ऐप पूल को रीसायकल करने के लिए डिफ़ॉल्ट क्यों है? क्या कुछ विशिष्ट कारणों के अलावा शायद अधिकांश वेब ऐप्स विवेकपूर्ण तरीके से स्मृति का प्रबंधन नहीं कर रहे हैं? यह देखते हुए कि आप अपने एप्लिकेशन की मेमोरी को ठीक से प्रबंधित कर रहे हैं, क्या आगे जाकर इसे बंद करना सुरक्षित है? कुछ संभावित नीचे की तरफ, पुनर्चक्रण को बंद करने या इसे चालू रखने के फायदे क्या हैं?


1
क्या आप सुनिश्चित हैं कि आप कार्यकर्ता प्रक्रिया का पुनर्चक्रण नहीं कर रहे हैं, न कि ऐप पूल का?
रयाथल

जवाबों:


16

हां, दिन में एक बार चूक करने का कारण यह चिंता है कि वेब ऐप में मेमोरी लीक हो सकती है। IIS ऐप पूल को बार-बार रिसाइकल करने का सबसे बड़ा नकारात्मक पहलू यह है कि इससे web.config रीडिंग, असेंबली लोडिंग और asp.net पेजों का पुन: संयोजन और (यदि आप उन्हें पूर्व-संकलन में विश्वास नहीं करते हैं) कोड behinds का कारण होगा। यह एक बहुत ही भारी प्रक्रिया है और यह तब तक नहीं होता है जब तक कि ऐप पूल के पुनर्नवीनीकरण के बाद किसी पृष्ठ के लिए अगला अनुरोध नहीं हो जाता है, इस विशेष अनुरोध को धीमा कर देता है। IIS7 में अब एक मॉड्यूल है जिसे आप इस समस्या से "निपटने" में मदद करने के लिए एप्लिकेशन वार्म अप डाउनलोड कर सकते हैं ।

मैं व्यक्तिगत रूप से अपने रीसाइक्लिंग को शेड्यूल करने के बजाय ऐप-स्टार्ट पर लॉगिंग के साथ युग्मित मेमोरी-आधारित मैक्सिमम का उपयोग करना पसंद करता हूं। यह मुझे लगता है कि मेरे ऐप की कोई मेमोरी लीक नहीं हुई है और जब ऐप पूल रीसायकल करता है तो गलत साबित हो सकता है।


+1, लेकिन ऐसा लगता है कि उन्होंने आवेदन के मॉड्यूल को गर्म कर लिया है
aceinthehole

क्या? यह प्रफुल्लित करने वाला है। शायद वे किसी दिन बेहतर समाधान का पता लगा लेंगे। : /
Randolpho

3
और अब ऐसा लगता है कि वे एक और जारी किया एवेन्यू
aceinthehole

14

1740 मिनट 29 घंटे है:

जब IIS 6 को विकसित किया जा रहा था - जो कि संस्करण है जिसने एप्लिकेशन पूल पेश किया है - नियमित रूप से समय अंतराल के लिए सेट करने के लिए आवश्यक डिफ़ॉल्ट जब एप्लिकेशन पूल स्वचालित रूप से पुनर्नवीनीकरण किए जाते हैं।

वेड ने साधारण घंटे के लिए 29 घंटे का सुझाव दिया कि यह 24 से अधिक छोटी संख्या है । वह एक कंपित और गैर-दोहराव वाला पैटर्न चाहता था जो प्रति दिन एक से अधिक बार नहीं होता है। वेड के शब्दों में: "आपको एक प्रतिध्वनि वाला पैटर्न नहीं मिलता है"। डिफ़ॉल्ट 1740 मिनट (29 घंटे) हो गया है!

http://weblogs.asp.net/owscott/archive/2013/04/06/why-is-the-iis-default-app-pool-recycle-set-to-1740-minutes.aspx


7

फ़ीचर क्लासिक एएसपी दिनों से एक होल्डओवर है जब सब कुछ मेमोरी लीक हो गया और आपको इसे करना पड़ा। अधिकांश लोगों को वेब सर्वर पर रात भर शेड्यूल करना था। IIS6 ने प्रत्येक 1740 मिनट में ऐप पूल को बंद कर दिया (या यदि ऐप 20 मिनट के लिए निष्क्रिय है)। IIS7 ने परंपरा जारी रखी।

उन दिनों में मुझे Microsoft से सलाह मिली थी कि यह तब तक अनावश्यक था जब तक कि आपके पास एक ज्ञात मेमोरी लीक के साथ विरासत ऐप नहीं था। इसलिए यदि आप विशुद्ध रूप से प्रबंधित कोड चला रहे हैं तो आप ठीक होंगे।


3

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

निष्क्रियता के समय की निगरानी जैसे अन्य विकल्प हैं जो आपकी स्थिति के लिए बेहतर समाधान हो सकते हैं।

एप्लिकेशन पूल को स्पिन करने में कुछ समय लग सकता है और एप्लिकेशन को कम प्रतिक्रियाशील बना सकता है ताकि उन्हें बनाए रखने से प्रदर्शन में मदद मिल सके।


1

वास्तव में, यह शुद्ध रूप से लीक संसाधनों को साफ करने के लिए है जो (हो सकता है) मौजूद हो। 1740 मिनट केवल ट्रिगरिंग इवेंट नहीं है। यह एक विशिष्ट अधिकतम संख्या में अनुरोधों के बाद या कार्यकर्ता प्रक्रिया मेमोरी की एक विशिष्ट राशि से अधिक होने के बाद भी होता है। यह MSDN लाइब्रेरी में बहुत अच्छी तरह से प्रलेखित है। दुर्भाग्य से, यह नीति सत्र राज्य और स्टैटिक्स जैसे सिंगलटन जैसी चीजों को तोड़ती है। आपके ऐप को उपयोगकर्ताओं को फिर से प्रमाणित करने और / या फिर से सिंगलेट्स को फिर से प्रमाणित करने के लिए पर्याप्त रूप से मजबूत होने की आवश्यकता होगी, ताकि उपयोगकर्ता के अनुभव को परेशान न किया जा सके। इसने हमें ASP.NET सत्र के बजाय डेटाबेस में प्रमाणित सत्रों का प्रबंधन करने के लिए मजबूर किया। अन्यथा, जब भी इनमें से एक ट्रिगर के कारण सर्वर पुनर्नवीनीकरण किया जाता है, तो हमारे उपयोगकर्ता हमारे लॉगिन पृष्ठ पर वापस आ जाते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.