2013-10-24 5 views
6

मुझे ऐप मिला जो उपयोगकर्ता गतिविधि के आधार पर कुछ नेटवर्किंग करता है। ऐप द्वारा भेजे गए सामान्य पेलोड 100-200 बाइट्स हैं इसलिए मूल रूप से कोई भारी उठाने का कार्य नहीं है। ये कार्य आमतौर पर किसी भी समस्या का काम कर रहे हैं (सांख्यिकीय रूप से 99, 9% या अनुरोध ठीक हैं), लेकिन इन नेटवर्किंग गतिविधियों से अलग, मेरा ऐप हमारे सर्वर पर दिल की धड़कन भेज रहा है (जो अमेज़ॅन के ईसी 2 (us-east1- डी अगर इससे कोई फर्क पड़ता है))। हार्टबीट को हर 10 सेकंड में एचटीटीपीएस पर सामान्य पोस्ट अनुरोध के रूप में भेजा जाता है - और यह वास्तव में मेरे लिए काम नहीं कर रहा है क्योंकि विफलता दर सामान्य नेटवर्क गतिविधियों के साथ देखी गई है - मेरे हाल के 7 घंटे के परीक्षण के दौरान 25% दिल की धड़कन अनुरोध विफल रही (लेकिन मैंने 35% बूंदों को भी देखा) और यह आमतौर पर उस दर पर रहता है। जब मैं एसएसएल अक्षम करता हूं तो त्रुटि दर मेरे परीक्षण डिवाइस पर 8% प्रतिशत पर रहता है। यह संभवत: यह बड़ी समस्या नहीं होगी यदि इन विफलताओं में किसी भी पैटर्न (यानी प्रत्येक चौथाई आदि) में कुछ दर आधारित फ़िल्टरिंग हो सकती है, या प्रत्येक पूर्ण घंटे या दिन के करीब असफल हो सकती है जिसका अर्थ हो सकता है कि अनुरोध टोपी कहीं भी सेट की गई है)। लेकिन ऐसा कुछ भी नहीं होता - कभी-कभी 10-15 अनुरोध एक पंक्ति में असफल हो सकता है, और यह दिल की धड़कन के लिए बुरा है। इसके अतिरिक्त, चीज़ को और भी खराब बनाने के लिए, फिलहाल मुझे अनुरोध विफल होने लगते हैं, मैं सर्वर से उसी डिवाइस से कनेक्ट कर सकता हूं और यह बिना किसी समस्या के काम कर रहा है)। यह समस्या Android (2.2+) के किसी भी समर्थित संस्करण पर होती है।नेटवर्क "स्थिरता" समस्या जड़ों को ट्रैक करने में समस्याएं

मैं HTTP अनुरोध करने के लिए हाल ही में httpclientandroidlib का उपयोग करता हूं, इसलिए मुझे संदेह करना पड़ा कि lib एक अपराधी बन गया है, इसलिए मैंने Android Asynchronous HTTP Client पर स्विच किया लेकिन वास्तव में इसमें कोई बदलाव नहीं आया।

NoHttpResponseException: The target server failed to respond The target server failed to respond URL: https://xx.xx.xx.xx/heartbeat/

और भी एसएसएल सक्षम कनेक्शन के लिए: मैं ज्यादातर की तरह अपवाद हो रही है

javax.net.ssl.SSLException: Read error: ssl=0x784bc588: I/O error during system call, Connection reset by peer Read error: ssl=0x784bc588: I/O error during system call, Connection reset by peer URL: https://xx.xx.xx.xx/heartbeat/

मैं मूल रूप से अपराधी पहले पता लगाने के लिए है, ताकि एप्लिकेशन मोबाइल नेटवर्क पर ज्यादातर चल रहा है जानने चाहते हैं, मैं इस समस्या के साथ आगे बढ़ने के लिए किसी भी सुझाव के लिए खुला हूं क्योंकि मैं इस समय थोड़ी देर में फंस गया हूं। https://play.google.com/store/apps/details?id=com.ulfdittmer.android.ping

यह भागो मोबाइल नेटवर्क (सेलुलर) और वाईफाई पर:

+0

क्या आपने अपने सर्वर के प्रदर्शन की पूरी तरह से जांच की है? –

+0

"सहकर्मी द्वारा कनेक्शन रीसेट" यह शायद एक सर्वर मुद्दा है। इसे स्पष्ट करने के लिए आप शायद वायरशर्क के साथ इसका पता लगा सकते हैं। http://www.wireshark.org/ – Devrim

+0

पुस्तकालय की आपकी नई पसंद में दिलचस्प समस्याएं हैं: https://github.com/loopj/android-async-http/issues – flup

उत्तर

0

भागो इस एप्लिकेशन और बस त्रुटि दर को देखने के लिए एक सामान्य पिंग करते हैं।

यदि आप वाईफाई पर हैं, तो अपने राउटर को सत्यापित करने के लिए ping -n 100 google.com चलाएं और नेटवर्क एक्सेस पॉइंट फ्लैकी नहीं है। यदि ऐसा है, तो राउटर को अनप्लग करें और इसे वापस प्लग करें। लिंकिस राउटर और एक्सेस पॉइंट्स और बेल्किन एक्सेस पॉइंट उस तरह फ्लेकी हो जाते हैं।

यदि आपको 10s दिल की धड़कन की आवश्यकता है, तो HTTP टाइमआउट को 3-5 सेकंड पर सेट करें और तेजी से विफल हो जाएं, और अगर यह विफल हो जाए तो पुनः प्रयास करें।

0

ठीक है अगर आप अपने एचटीपी क्लाइंट उदाहरण को हेर्थबीट थ्रेड और यूई थ्रेड में साझा करते हैं, तो नियमित http कनेक्शन अनुरोध प्रगति पर रद्द कर सकता है। कृपया सुनिश्चित करें कि वे ऑब्जेक्ट को लॉक करके या HttpClient उदाहरणों को अलग करके, एक ही समय में अनुरोध नहीं भेजते हैं।

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