2012-05-18 8 views
37

मेरे आवेदन में, एक क्वेरी को निष्पादित करने में 3 मिनट लगते हैं। मैंने पाया कि डिफ़ॉल्ट निष्पादनटाइमआउट मान 110 सेकंड है। मैंने इसे 500 (सेकेंड) में बदलने की कोशिश की लेकिन यह मेरी समस्या को ठीक नहीं किया। कहीं मैंने पाया कि <compilation debug="false">निष्पादनटाइम कॉन्फ़िगर करने की अनुमति देता है। हालांकि, यहां तक ​​कि इसने मेरी समस्या का समाधान नहीं किया।निष्पादन बढ़ाने के लिए टाइम-टाइम चलने वाली क्वेरी के लिए टाइमआउट कैसे करें?

क्या कोई जानता है कि मैं लंबे समय से चलने वाली क्वेरी के लिए निष्पादन टाइमआउट कैसे बढ़ा सकता हूं?

+0

ध्यान में रखें कि यदि आप सत्र का उपयोग करते हैं तो आप अपने सभी शेष पृष्ठों को अवरुद्ध करते हैं। – Aristos

+0

यह आपके लिए काम नहीं कर रहा है? –

उत्तर

2

जब कोई प्रश्न लंबे समय तक लेता है, तो मैं इसे असीमित रूप से चलाने की सलाह दूंगा और जब यह पूरा हो जाए तो कॉलबैक फ़ंक्शन का उपयोग करें।

मुझे एएसपी.नेट के साथ ज्यादा अनुभव नहीं है, लेकिन शायद आप इस असीमित व्यवहार के लिए AJAX का उपयोग कर सकते हैं।

आम तौर पर एक वेब पेज केवल सेकंड में लोड होना चाहिए, मिनटों में नहीं। अपने उपयोगकर्ताओं को इतने लंबे समय तक इंतजार न करें!

+1

निष्पादनटाइमआउट किसी भी अनुरोध, सिंक या एसिंक के लिए है ... इसलिए AJAX अनुरोध एक ही समय सीमा से पीड़ित होंगे –

18

आप लंबे समय तक निष्पादन समय का समर्थन करने के लिए web.config में executionTimeout सेट कर सकते हैं।

executionTimeout एएसपी.NET द्वारा स्वचालित रूप से बंद होने से पहले निष्पादित करने की अनुमति की अधिकतम संख्या निर्दिष्ट करता है। MSDN

<httpRuntime executionTimeout = "300" /> 

पांच मिनट को यह मेकअप निष्पादन समय समाप्ति।

वैकल्पिक Int32 विशेषता।

एएसपी.NET द्वारा स्वचालित रूप से बंद होने से पहले पर अनुरोध की अधिकतम संख्या निर्दिष्ट करता है।

यह टाइम-आउट केवल तभी लागू होता है जब संकलन तत्व में डीबग विशेषता गलत है। इसलिए, यदि डीबग विशेषता सही है, तो आप को डिबगिंग करते समय एप्लिकेशन शटडाउन से बचने के लिए इस विशेषता को बड़े मान पर सेट करने की आवश्यकता नहीं है। डिफ़ॉल्ट 110 सेकंड, Reference है।

+3

क्या हम इस मान को व्यक्तिगत पृष्ठ – MonsterMMORPG

+0

@MonsterMMORPG के लिए सेट कर सकते हैं, आप इस कोड का उपयोग कर सकते हैं: Page.Server.ScriptTimeout = 60 –

84

निष्पादन टाइमआउट .NET फ्रेमवर्क 1.0 और 1.1, 110 सेकंड के लिए 90 सेकंड है।

आप <httpRuntime>

<httpRuntime executionTimeout = "number(in seconds)"/> 

तहत defult सेटिंग्स आप अपने web.config में यह सब करने की ज़रूरत को बदलने लेकिन याद रखें करने के लिए की जरूरत है:

इस टाइम-आउट केवल तभी लागू होता संकलन में डिबग विशेषता तत्व गलत है।

पर विस्तार से compilation Element के बारे में

नज़र इस दस्तावेज़ पर नज़र के बारे में httpRuntime Element

+26

टाइम-आउट मान के बारे में टिप केवल तभी लागू होती है जब web.config फ़ाइल के संकलन तत्व में डीबग = "सत्य" उत्कृष्ट था। –

+15

@EdGraham का मतलब यह नहीं है कि "टाइम-आउट मान केवल तब लागू होता है जब डीबग = झूठी"? ह्यूमप्टी डुमिप्टी कह रहा है: यह टाइम-आउट केवल तभी लागू होता है जब संकलन तत्व में डीबग विशेषता गलत है – 7wp

+0

यह सही होना चाहिए - मैं क्षमा चाहता हूं! –

1

मेरे मामले में, मैं अपने WCF अधिक से अधिक 2 घंटे के लिए चल रहा है की जरूरत है। सेटिंग और बिल्कुल काम नहीं किया। डब्ल्यूसीएफ शायद 20 ~ 30 मिनट से अधिक समय तक निष्पादित नहीं हुआ। इसलिए मैंने आईआईएस मैनेजर में एप्लिकेशन पूल की निष्क्रिय टाइमआउट सेटिंग बदल दी, फिर यह काम किया! आईआईएस मैनेजर में, अपना एप्लिकेशन पूल चुनें और उस पर राइट क्लिक करें और उन्नत सेटिंग्स चुनें, फिर निष्क्रिय टाइमआउट सेटिंग को अपने इच्छित मिनटों में बदलें। इसलिए, मुझे लगता है कि web.config सेट करना और एप्लिकेशन पूल सेट करना आवश्यक है।

+0

इसका शायद मतलब है कि आपने इसे सही तरीके से सेट नहीं किया है, या परिवर्तन करने के बाद अपने ऐप पूल को रीसायकल नहीं किया है। – Zorgarath

7

आरई। "क्या हम इस मान को व्यक्तिगत पृष्ठ के लिए सेट कर सकते हैं" - MonsterMMORPG।

हां, आप स्थान-टैग का उपयोग कर पिछले उत्तर को संलग्न कर सकते हैं (& सामान्यतः)।

उदा।

... 
    <location path="YourWebpage.aspx"> 
    <system.web> 
     <httpRuntime executionTimeout="300" maxRequestLength="29296" /> 
    </system.web> 
    </location> 
</configuration> 

ऊपर टुकड़ा अपने ही काम कर web.config है, जो मैं कल का परीक्षण के अंत से लिया जाता है - यह मेरे लिए काम करता है।

+0

जिस तरह से मैं चीजों को समझता हूं, क्या मैं उस फ़ोल्डर में एक छोटी web.config फ़ाइल जोड़ सकता हूं जहां मेरा विशिष्ट पृष्ठ है, जिसमें बस यह सेटिंग है? मैं web.configs अधिभार पर विश्वास करता हूं, ताकि स्थानीय पेज फ़ोल्डर में web.config रूट पर web.config सेटिंग को सवारी कर सके, और केवल विशिष्ट पृष्ठ को अधिक सहिष्णु बनाता है? –

1

एक प्रति पृष्ठ स्तर पर समय समाप्ति सेट करने के लिए, तो आप इस सरल कोड इस्तेमाल कर सकते हैं:

Page.Server.ScriptTimeout = 60; 

नोट: 60 के लिए 60 सेकंड का मतलब है, इस समय समाप्ति पर ही लागू होता संकलन तत्व में डिबग विशेषता गलत है ।

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