2010-03-20 6 views
8

पर समय पढ़ें, मेरे पास क्लाइंट सर्वर आर्किटेक्चर के साथ एक एप्लिकेशन है। क्लाइंट जावा स्विंग/एडब्ल्यूटी के साथ जावा वेब स्टार्ट का उपयोग करें और sert टोमकैट के साथ HTTP सर्वर/सर्वलेट का उपयोग करता है। संचार वस्तुओं के क्रमिकरण से बना है, ऑब्जेक्टऑटपुट एक बाइट सरणी क्रमबद्ध करता है और क्रमशः ऑब्जेक्टइनपुटस्ट्रीम और deserializes सर्वर को भेजता है।java.net.SocketTimeoutException:

एप्लिकेशन समेकन के समय पर सही ढंग से संचार करने का अनुसरण करता है जहां त्रुटि "सॉकेटएक्सप्शन रीड टाइमआउट" दिखाना शुरू होता है। एरो तब होता है जब सर्वर मेरी सर्वलेट doPost विधि में विधि ऑब्जेक्टइनपुटस्ट्रीम.getObject() विधि का आह्वान करता है।

टॉमकैट धीमा हो जाएगा और त्रुटियों को सर्वर प्रतिक्रिया समय को कम करना शुरू हो जाएगा जब तक कि मुझे सर्वर को पुनरारंभ करना होगा और सब कुछ काम करने के बाद।

कोई इस समस्या से गुजर गया है?

क्लाइंट कोड

URLConnection conn = url.openConnection(); 
conn.setDoOutput(true); 

OutputStream os = conn.getOutputStream(); 
ObjectOutputStream oss = new ObjectOutputStream(os); 

oss.writeUTF("protocol header sample"); 

oss.writeObject(_parameters); 
oss.flush(); 
oss.close(); 

सर्वर कोड

ObjectInputStream input = new ObjectInputStream(_request.getInputStream()); 
String method = input.readUTF(); 

parameters = input.readObject(); 

input.readObject() है, जहां त्रुटि

+0

क्या आप कुछ कोड पोस्ट कर सकते हैं? – Enrique

+0

यह एक टीसीपी लिनक्स पैरामीटर है? बफर मेम आकार की तरह, अधिकतम खुली फ़ाइलें या अन्य? –

+0

क्या सॉकेट एक्सेप्शन 20 मिनट या उससे अधिक समय पहले गुजरने वाला समय है? (यदि मुझे कोई मानक गतिविधि याद नहीं है तो कोई मानक गतिविधि नहीं होने पर मानक समय की याद आती है जब टीसीपी/आईपी सॉकेट समय समाप्त होने से पहले प्रतीक्षा करेगा)? सभी अपवाद के बाद आपको "टाइमआउट पढ़ना" बता रहा है, क्या यह वेब की असीमित प्रकृति के साथ कुछ करने के लिए भी हो सकता है? – Wintermut3

उत्तर

10

आप हमें ज्यादा जानकारी नहीं दी है पर जाने के लिए है, विशेष रूप से के बारे में ग्राहक पक्ष। लेकिन मेरे संदेह है कि ग्राहक के पक्ष है:

  • सामग्री-लंबाई हेडर (या गलत मान को स्थापित) करने में नाकाम रहने,
  • उत्पादन धारा फ्लश करने में नाकाम रहने, और/या
  • सॉकेट के आउटपुट पक्ष को बंद नहीं करना।

रहस्यमय।

आपके अपडेट किए गए प्रश्न के आधार पर, यह उपर्युक्त में से कोई भी नहीं दिखता है।

  • किसी कारण ग्राहक के पक्ष या तो क्रमबद्धता के दौरान पूरी तरह से ताला लगा या एक बहुत लंबे समय ले जा रहा है के लिए: यहाँ अन्य संभावनाओं के एक जोड़े हैं।
  • क्लाइंट और सर्वर के बीच प्रॉक्सी है जो समस्याएं पैदा कर रही है।
  • आप लोड से संबंधित नेटवर्क समस्याओं, या नेटवर्क हार्डवेयर समस्याओं का सामना कर रहे हैं।

एक अन्य संभावित व्याख्या आप एक स्मृति रिसाव है कि है, और कहा कि मंदी जी सी के कारण होता है और अधिक से अधिक समय देने के लिए के रूप में आप स्मृति से बाहर चलाने के। यदि आपने उन्हें सक्षम किया है तो यह जीसी लॉग में दिखाई देगा।

0

मुझे लगता है कि उच्च Concurrency के दौरान, टोमकैट में सेट सॉकेट टाइमआउट समाप्त हो गया है और कनेक्शन बंद है। उस कनेक्शन के लिए टोमकैट द्वारा अगला पढ़ने सर्वर में निर्दिष्ट सर्वर सॉकेट टाइमआउट से अधिक है।
यदि आप इस समस्या से बचना चाहते हैं तो आपको सर्वर-साइड पर टाइमआउट बढ़ा देना होगा जो आपके मामले में समाप्त हो गया है। लेकिन सलाह नहीं है।
बीटीडब्ल्यू आपने पर्याप्त जानकारी नहीं दी। क्या आपने टॉमकैट में कनेक्शन के लिए धागे की संख्या बढ़ा दी? यदि आपने किया, तो यह निश्चित रूप से होगा।

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