2009-01-14 12 views
25

यहां स्टैक ओवरफ्लो पर, हम हर दिन कुछ "अनुरोध समय समाप्त" अपवाद देख रहे हैं।निदान "अनुरोध का समय समाप्त हो गया है" HttpExceptions

तथ्य:

  • त डिफ़ॉल्ट 90 सेकंड
  • केवल पदों
  • डाटा पोस्ट पर होता है पाठ, आम तौर पर छोटे (< 1KB) है, लेकिन कुछ ही KB
  • तक हो सकते हैं
  • कोई प्रपत्र डेटा सर्वर चर में कब्जा कर लिया है
  • ग्राहक यूएएस विविध रहे हैं: IE5.5 - 7, फ़ायरफ़ॉक्स 3.0.5, iPhone, क्रोम
  • ग्राहक स्थान विविध हैं: यूके, फ्रांस, यूएसए - एनसी, ओएच, एनई, IN

हमने सर्वर-आधारित टाइमआउट का परीक्षण किया है (यानी। थ्रेड स्लीप का उपयोग करना) और अपवाद लॉग में सभी फॉर्म चर सही ढंग से कैप्चर किए गए हैं - इससे हमें विश्वास होता है कि ग्राहक को आवंटित समय में अनुरोध भेजने में समस्याएं आ रही हैं।

इस स्थिति को जाल/डीबग करने के तरीके पर कोई विचार बहुत स्वागत है!

+4

इस सटीक समस्या हुई है जब हम एकीकृत मोड IIS7.5 को IIS6 से बदल। हमारी पूछताछ के परिणाम यहां उपलब्ध हैं: http://stackoverflow.com/questions/4929115/any-progress-on-diagnosing-request-timed-out-httpexceptions/7276249#7276249। –

उत्तर

3

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

मैंने इस अवसर पर ध्यान दिया है कि मुझे कुछ कार्रवाई लटकने के बाद फिर से काम करने के लिए सफारी को पुनरारंभ करने की आवश्यकता है, लेकिन मुझे लगता है कि यह मेरी समस्या थी।

+0

मैं आज रात ऐसा करूंगा - सुझाव के लिए धन्यवाद! –

+0

मैं व्यवहार को पुन: उत्पन्न करने में सक्षम नहीं था - लंबे समय तक चलने वाले अनुरोध केवल 504'एड हैं। लेकिन यह अच्छा है, क्योंकि हम जानते हैं कि यह संभवतः क्लाइंट के मुद्दों पर नहीं है, क्योंकि एएसपी.नेट पाइपलाइन भी नहीं पहुंच पाई है। –

2

हम उन लोगों को बहुत अधिक ट्रैफिक वेब क्लाइंट के साथ देखते थे - आश्चर्य है कि यह संबंधित है या नहीं। क्या माना जा रहा था कि HttpWebRequest (मुझे लगता है कि आपको HttpWebResponse के साथ समस्याएं आ रही हैं? शायद उनके पास एक ही समस्या है) कवर के नीचे कुछ जंकी थ्रेड पूल का उपयोग करता है, जब भी आपके अनुरोध तुल्यकालिक होते हैं। प्रत्येक अब और फिर कुछ डेडलॉक होगा क्योंकि स्टैक में कुछ अन्य .NET ऑब्जेक्ट उच्च सिस्टम थ्रेडपूल का उपयोग कर रहा था और एक दूसरे को भूखा कर देगा, अंत में टाइमआउट का कारण बन जाएगा। मुझे लगता है कि यह मुद्दा यहां बेहतर वर्णन किया गया है: http://www.deez.info/sengelha/2005/03/03/beware-threadpools-and-httpwebrequest/

+0

वहां बहुत गहन लेख है - इसका तात्पर्य है कि यह मुद्दा 2.0 में तय किया गया था। यह देखने के लिए कि क्या ऐसा है, इस पर और अधिक शोध करेंगे। –

9

यदि आप आईआईएस 7 चला रहे हैं तो आप Failed Request Tracing का उपयोग कर सकते हैं। मैंने वास्तव में टाइमआउट के लिए इसका उपयोग नहीं किया है, मैंने ज्यादातर इसे केवल विशिष्ट http त्रुटि कोड कैप्चर करने के लिए सेट अप किया है। लेकिन मुझे पता है कि आप X से अधिक समय लेते हुए किसी भी अनुरोध के निशान को डंप करने के लिए प्राप्त कर सकते हैं।

+0

हां, हम आज रात को इसे वापस चालू करने जा रहे थे - अनुस्मारक के लिए धन्यवाद :) –

+0

हम प्रभावित यूआरएल कोड पथों में कुछ ट्रेस स्टेटमेंट भी जोड़ने जा रहे हैं - उम्मीद है कि इससे समस्या को हल करने में सहायता मिलेगी। –

+0

देखें http://stackoverflow.com/questions/442258/getting-trace-messages-into-failed-request-tracing-from-controllers –

1

मैं आपके लॉग में आईपी पते को स्कैन भी कर सकता हूं यह देखने के लिए कि क्या वही लोग बार-बार समस्याएं हैं। आप जानते हैं, यह संभव है कि कुछ लोग अभी भी डायल अप खातों का उपयोग कर रहे हैं, या उनके अंत में अन्य नेटवर्किंग मुद्दे हो सकते हैं। लेकिन, ज़ाहिर है, जितना संभव हो उतना जांच किए बिना इसे लिखो मत।

0

हम आईआईएस 6 से आईआईएस 7 में स्विच करने के बाद हमारे वेबसर्वर के साथ "अनुरोध समय समाप्त" समस्या का अनुभव कर रहे हैं। मेरा मानना ​​है कि यह मुद्दा आईआईएस 7-विशिष्ट है। मेरा अनुमान है कि प्रोसेसिंग के लिए एएसपी.Net को अनुरोध सौंपने से पहले, इन त्रुटियों को आईआईएस 6 में प्रोसेसिंग चेन को निगल लिया या अनदेखा कर दिया गया था। मैं आज असफल अनुरोध ट्रेसिंग चालू कर रहा हूं यह देखने के लिए कि क्या मैं इस मुद्दे के बारे में और जानकारी प्राप्त कर सकता हूं। अब तक ऐसा लगता है कि क्लाइंट-साइड कारणों की आपकी व्याख्या सबसे मान्य मानती है।

12

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

हम बिना किसी किस्मत के क्लाइंट रेपो प्राप्त करने की कोशिश कर रहे हैं, लेकिन हमारे मामले में यह पूरी तरह से नेटवर्क से संबंधित प्रतीत होता है (या संभवतः कुछ "सुरक्षा" सॉफ़्टवेयर जो पोस्ट की सामग्री पसंद नहीं करते हैं)।

+0

यह वास्तव में हम सभी निर्धारित करने में सक्षम हैं - पूर्ण अनुरोध इसे नहीं बना रहे हैं सर्वर के लिए। यह परेशान है, क्योंकि आप हर अनुरोध की सेवा करना चाहते हैं, विशेष रूप से वोटिंग और प्रश्न पूछने/जवाब देने के लिए POSTs! –

+0

ऐसा लगता है कि बहुत से अधूरे अनुरोध "स्पैमी" स्रोतों से हैं। –

+4

क्या आपने कभी इस समस्या के समाधान के साथ आया था या क्या आप उन्हें अनदेखा कर रहे हैं? मुझे यह वैध अनुरोधों से बहुत कुछ मिल रहा है (स्पैमी नहीं)। – brheal

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