2010-07-13 10 views
6

मेरे पास एक सर्वर एप्लिकेशन है जो अमेज़ॅन ईसी 2 क्लाउड में चलता है। मेरे क्लाइंट (ब्राउज़र) से मैं एक HTTP अनुरोध करता हूं जो सर्वर पर एक फ़ाइल अपलोड करता है जो तब फ़ाइल को संसाधित करता है। यदि बहुत सारी प्रसंस्करण (बड़ी फ़ाइल ) है, तो सर्वर हमेशा 120 सेकंड के ठीक बाद 504 बैकएंड निरंतरता त्रुटि के साथ बाहर निकलता है। हालांकि मुझे यह त्रुटि मिलती है, सर्वर अनुरोध को संसाधित करता है और इसे पूरा करता है (डेटाबेस की जांच करके सत्यापित) लेकिन मुझे टाइमआउट के कारण मेरे क्लाइंट पर अंतिम परिणाम नहीं दिखाई दे रहा है।HTTP 1204 सटीक 120 सेकंड के बाद टाइमआउट

मैं इस बारे में अनजान हूं कि यह क्यों हो रहा है। क्या किसी को भी इसी तरह के 504 टाइमआउट का सामना करना पड़ा है? क्या मेरे इंटरमीडिएट प्रॉक्सी सर्वर में मेरे नियंत्रण में नहीं है जो समय निकाल रहा है?

+0

क्या आप इस मुद्दे को हल कर सकते हैं? – Tony

उत्तर

0

यह संभव है कि स्क्रिप्ट निष्पादन के दौरान ब्राउज़र टाइमआउट।

1

मानते हैं कि सही स्थिति कोड वापस किया जा रहा है, समस्या यह है कि एक मध्यवर्ती प्रॉक्सी समय समाप्त हो रहा है। "सर्वर, गेटवे या प्रॉक्सी के रूप में कार्य करते समय, यूआरआई द्वारा निर्दिष्ट अपस्ट्रीम सर्वर से समय पर प्रतिक्रिया प्राप्त नहीं हुई।" (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.5) यह सबसे अधिक संभावना इंगित करता है कि मूल सर्वर में कुछ प्रकार का मुद्दा है (यानी, आपके अनुरोध को संसाधित करने में लंबा समय लगाना), तो यह जल्दी से प्रतिक्रिया नहीं दे रहा है।

शायद सबसे अच्छा समाधान आपके सर्वर ऐप को फिर से तैयार करना है ताकि यह "303 अन्य देखें" स्थिति कोड के साथ प्रतिक्रिया दे; एक बार जब सर्वर संसाधित हो जाता है और अंतिम परिणाम बनाता है तो आपका क्लाइंट बाद के डेटा बिंदु पर डेटा पुनर्प्राप्त कर सकता है।

संपादित करें: एक और विचार है कि आप अपने सर्वर ऐप को दोबारा तैयार करें ताकि यह अनुरोध इकाई आकार बहुत बड़ा होने पर "413 अनुरोध इकाई बहुत बड़ा" स्थिति कोड का जवाब दे। यह त्रुटि से छुटकारा मिल जाएगा, हालांकि यह अपने अनुप्रयोग कम करता है, तो यह कर सकते हैं केवल प्रक्रिया "छोटे" फ़ाइलों उपयोगी बना सकते हैं "

अन्य संभव समाधान:। प्रॉक्सी के

  • बढ़ाएँ टाइमआउट मान (अगर यह आपके नियंत्रण में)
  • हो, तो एक और, एक ही अनुप्रयोग के साथ तेजी से सर्वर)
  • आपके अनुरोध को अलग ढंग से करें (यदि संभव हो) ऐसी है कि आप एक समय में कम डेटा भेज रहे हैं एक अलग सर्वर के लिए अपने अनुरोध करें (
+0

इस मुद्दे को हल करने के लिए कोई विचार? मेरा सर्वर 30 सेकंड के बाद टाइमआउट कर रहा है। उसी परिदृश्य, अमेज़ॅन EC2 – Tony

+0

में सूचीबद्ध फ़ाइलों के अलावा बड़ी फ़ाइलों को अपलोड करना? नहीं, माफ करिए। –

5

मुझे एक ही समस्या है और मेरे मामले में मेरा मानना ​​है कि यह लोचदार लोड बैलेंसर (ईएलबी) और ईसी 2 उदाहरण के बीच कनेक्शन के कारण है।

एक दीर्घकालिक समाधान के लिए मैं उपरोक्त james.garriss द्वारा सुझाए गए 303 स्थिति प्रतिक्रिया + बैक-एंड प्रोसेसिंग के साथ जाऊंगा।

अल्पकालिक समाधान के लिए अमेज़ॅन समर्थन ईएलबी टाइमआउट बढ़ाने के लिए संभव हो सकता है (https://forums.aws.amazon.com/thread.jspa?messageID=491594&#491594 में उनकी प्रतिक्रिया देखें)। दुर्भाग्य से एपीआई या कंसोल के माध्यम से टाइमआउट को बदलने का कोई तरीका नहीं प्रतीत होता है।

[अद्यतन] एडब्ल्यूएस अब आपको कंसोल, सीएलआई या .ebextensions कॉन्फ़िगरेशन के माध्यम से निष्क्रिय टाइमआउट को अपडेट करने की अनुमति देता है। http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-idle-timeout.html देखें (अद्यतन के लिए धन्यवाद @ Daniel Patz)

+2

ऐसा लगता है कि अब आप समय-समय पर स्वयं को कॉन्फ़िगर कर सकते हैं: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-idle-timeout.html –

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