2013-06-13 12 views
29

के तहत समय समाप्त पढ़ें मेरे पास टॉमकैट आधारित वेब एप्लिकेशन है। मैं बीच-बीच में निम्न अपवाद हो रही है,java.net.SocketTimeoutException: टॉमकैट

Caused by: java.net.SocketTimeoutException: Read timed out 
    at java.net.SocketInputStream.socketRead0(Native Method) 
    at java.net.SocketInputStream.read(SocketInputStream.java:150) 
    at java.net.SocketInputStream.read(SocketInputStream.java:121) 
    at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:532) 
    at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:501) 
    at org.apache.coyote.http11.InternalInputBuffer$InputStreamInputBuffer.doRead(InternalInputBuffer.java:563) 
    at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:124) 
    at org.apache.coyote.http11.AbstractInputBuffer.doRead(AbstractInputBuffer.java:346) 
    at org.apache.coyote.Request.doRead(Request.java:422) 
    at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290) 
    at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:431) 
    at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315) 
    at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200) 
    at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385) 

दुर्भाग्य से मैं ग्राहक के लिए पहुँच नहीं है, इसलिए मैं सिर्फ विभिन्न कारणों से ऐसा हो सकता पर पुष्टि करने के लिए कोशिश कर रहा हूँ,

  1. सर्वर की कोशिश कर रहा है अनुरोध से डेटा पढ़ने के लिए, लेकिन क्लाइंट से डेटा आने के लिए टाइमआउट मान से अधिक समय लेना। यहां टाइमआउट आमतौर पर टॉमकैट कनेक्टर होगा -> कनेक्शन टाइमआउट विशेषता।

  2. क्लाइंट के पास एक रीड टाइमआउट सेट है, और सर्वर प्रतिक्रिया देने के लिए उससे अधिक समय ले रहा है।

  3. मेरे द्वारा चलाए गए धागे में से एक ने कहा कि यह उच्च सहमति के साथ हो सकता है और यदि रखरखाव सक्षम है।

# 1 के लिए, प्रारंभिक मूल्य मैं निर्धारित किया था 20 सेकंड था, मैं इस को छोड़ दिया है 60sec के लिए, का परीक्षण करने और अगर कोई परिवर्तन कर रहे हैं देखेंगे।

इस बीच, यदि आप में से कोई भी व्यक्ति आपको इस पर विशेषज्ञ राय प्रदान कर सकता है, तो यह वास्तव में सहायक होगा। या उस मामले के लिए आप किसी अन्य कारण के बारे में सोच सकते हैं जिसके कारण इस मुद्दे का कारण हो सकता है।

अग्रिम धन्यवाद।

विक्की

+0

मुझे विश्वास नहीं है कि यह बिंदु 2 है; हालांकि, यह पुष्टि करने के लिए कि आपको 'AccessLogValve' भी सेट अप करना चाहिए और एक विशिष्ट अनुरोध के साथ इस अपवाद को आजमाने और सहसंबंधित करना चाहिए। – fge

+0

हाय विकी, क्या आप इस मुद्दे को हल करने में सक्षम थे? मुझे एक ही मुद्दे का सामना करना पड़ रहा है। – Elina

उत्तर

29

सर्वर अनुरोध का डेटा पढ़ने की कोशिश कर रहा है, लेकिन इसकी डेटा ग्राहक से आने के लिए टाइमआउट मान से अधिक समय ले। यहां टाइमआउट आमतौर पर टॉमकैट कनेक्टर होगा -> कनेक्शन टाइमआउट विशेषता।

सही।

क्लाइंट के पास एक रीड टाइमआउट सेट है, और सर्वर प्रतिक्रिया देने के लिए उससे अधिक समय ले रहा है।

नहीं। यह ग्राहक पर टाइमआउट का कारण बन जाएगा।

धागे मैं माध्यम से चला गया में से एक ने कहा कि इस उच्च संगामिति के साथ हो सकता है और अगर keepalive सक्षम है।

यह स्पष्ट रूप से अनुमान है, और पूरी तरह से गलत है। ऐसा होता है अगर केवल तभी होता है जब टाइमआउट के भीतर कोई डेटा नहीं आता है। अवधि। लोड और रखरखाव और समरूपता के साथ कुछ भी करने के लिए कुछ भी नहीं है।

इसका मतलब यह है कि ग्राहक नहीं भेज रहा है। आपको इसके बारे में चिंता करने की ज़रूरत नहीं है। ब्राउज़र क्लाइंट आते हैं और अजीब तरीकों से सभी प्रकार के जाते हैं।

+0

इनपुट के लिए धन्यवाद। – Vicky

+0

जैसा कि मैंने कहा था, # 1 के लिए, मैंने टॉमकैट कनेक्टर के कनेक्शन टाइमआउट मान को 20sec से 60sec तक बढ़ा दिया है। यदि टाइमआउट कम हो जाता है तो मैं परीक्षण के लिए इसे -1 (अनंत) में बदलने की कोशिश करूंगा और अंत में एक और उचित मूल्य निर्धारित करूंगा। # 2 के लिए, यदि क्लाइंट का मानना ​​है कि सर्वर पर मुझे किस त्रुटि/अपवाद की उम्मीद करनी चाहिए? – Vicky

+0

यदि क्लाइंट प्रतिक्रिया को पढ़ने में समय निकालता है, तो सर्वर या तो कुछ भी नहीं देखेगा या फिर 'कनेक्शन रीसेट' देख सकता है। मैं सर्वर को टाइमआउट को बहुत अधिक नहीं पढ़ूंगा: यह एक थ्रेड से जुड़ा हुआ है। यदि कोई ग्राहक सर्वर से कनेक्शन खोलता है और तुरंत कुछ भी नहीं भेजता है तो यह बहुत बुरी तरह गलत व्यवहार कर रहा है। – EJP

-3

मैं 11.2 का उपयोग कर रहा हूं और टाइमआउट प्राप्त कर रहा हूं।

मैंने नीचे jsoup के संस्करण का उपयोग करके हल किया।

<dependency> 
     <groupId>org.jsoup</groupId> 
     <artifactId>jsoup</artifactId> 
     <version>1.7.2</version> 
     <scope>compile</scope> 
    </dependency>