2016-02-02 7 views
6

मैं नोड.जेएस (v0.12.4) और सॉकेट.ओ (1.3.2) का उपयोग कर वास्तविक समय व्यापार अनुप्रयोग में काम कर रहा हूं। उसमें, मुझे कुछ समय (100 एमएमएस) देरी हो रही है जब नोड.जेएस से जीयूआई (सॉकेट.आईओ) से निकलने वाली प्रतिक्रिया।Node.js को सॉकेट.ओ समय विलंब

मुझे कोई संकेत नहीं है कि नोड.जेएस से GUI (सॉकेट.आईओ) तक डेटा उत्सर्जित करते समय समय विलंब क्यों होता है।

यह उत्पादन साइट में हो रहा है। और हमने नेटवर्क विलंबता के कारण उत्पादन सर्वर स्थान में इसे डीबग करने का प्रयास किया। लेकिन एक ही परिणाम।

कृपया कोई भी इस पर मेरी सहायता करें?

+0

आप कौन सा ब्राउज़र उपयोग करते हैं (मानते हैं कि ग्राहक एक वेब ब्राउज़र है)। आपका सर्वर कॉन्फ़िगरेशन क्या है? डीबग करने के लिए आपने पहले से क्या प्रयास किया है? –

+0

[socket.io डीबग] पर एक नज़र डालें [http://socket.io/docs/logging-and-debugging/#) –

+0

हमने क्रोम और फ़ायरफ़ॉक्स की कोशिश की है। दोनों ब्राउज़र हम समय देरी का सामना कर रहे हैं। हमने नोड से डेटा उत्सर्जित करने और जीयूआई (सॉकेट.ओओ) से डेटा प्राप्त करने से पहले टाइम स्टैंप जोड़ा। समय अंतर 100 एमएस – MadTech

उत्तर

5

निम्नलिखित करने से पहले नोट करने के लिए एक बड़ी बात है। बैक-एंड (सर्वर साइड) से फ्रंट एंड (क्लाइंट साइड) से समय की गणना करते समय आपको उसी कंप्यूटर पर चलाने की आवश्यकता होती है जो उसी टाइमिंग क्रिस्टल का उपयोग करती है।

क्वार्ट्ज क्रिस्टल संचालित समय भी उच्च गुणवत्ता वाले मदरबोर्ड डेफर पर एक दूसरे से।

आप लगता है कोई देरी जब सामने अंत में एक ही पीसीतो देरी आप मूल रूप से पाया कारण होता था या तो द्वारा पर (क्लाइंट साइड) को बैक-एंड (सर्वर साइड) से समय देरी की गणना करते हैं नेटवर्क कनेक्शन या मदरबोर्ड समय क्रिस्टल में सम्मान। जो समय विलंब के कारण के रूप में Node.js और Socket.io को खत्म करेगा।

असल में आपको यह पता लगाना होगा कि समस्या का समाधान करने से पहले देरी हो रही है।

आपको यह जानने की ज़रूरत है कि आपके प्रोजेक्ट में का सबसे बड़ा प्रदर्शन हिट क्या कर रहा है। ऐसा करने के लिए आपको की आवश्यकता होगी प्रत्येक प्रक्रिया को लेते समय अलग करें। आपको डेटा की रिलीज के लिए डेटा की आरंभिक पुनर्प्राप्ति से समय विलंब को मापने की भी आवश्यकता है। फिर प्रत्येक समारोह, विधि और प्रक्रिया के समय विलंब को मापें। समस्या को अलग करने की कोशिश करें। आपको यह पूछने की ज़रूरत है कि क्या करने में सबसे अधिक समय लग रहा है?

यह पता लगाने के लिए कि आपके प्रदर्शन हिट से आप कहां से आ रहे हैं, निम्नलिखित करने की आवश्यकता है।

  1. कब तक यह करने के लिए अपने कोड के लिए ले जाता है जानकारी इसकी आवश्यकता मिल जानकारी प्राप्त करें।
  2. कितनी देर प्रत्येक जानकारी हेरफेर प्रक्रिया लेता जानकारी प्राप्त करने से पहले इसे बाहर भेजता है डेटा यानी समारोह/तरीकों ...
  3. जानकारी बाहर भेज दिया जाता पाते हैं कि कब तक यह ग्राहक के लिए जानकारी पाने के लिए लेता करने के बाद पक्ष और भार।
  4. सभी बार जोड़ें और सुनिश्चित करें कि यह आपके प्रदर्शन विलंब के बराबर है ताकि आपके पास प्रदर्शन रिसाव को अलग करने के लिए आवश्यक सभी डेटा हो।
  5. प्रत्येक विधि, फ़ंक्शन, प्रक्रिया ... को अपने समय में देरी से कम से कम समय लेने वाली अधिकांश समय तक देरी करें।यदि आप पाते हैं जब क्या प्रक्रियाओं सबसे बड़ा देरी आप तो इस समस्या को ठीक करने के लिए ... या कम से कम मूर्त समाधान का पता लगाने में सक्षम हो जाएगा ...

यहां कुछ उपकरण भर प्रदर्शन को मापने के लिए उपयोग कर सकते हैं उत्पन्न कर रहे हैं तुम्हारा कोड।

पहला: क्रोम का वास्तव में अच्छा टूल है जो आपको निष्पादित कोड के प्रत्येक टुकड़े के प्रदर्शन को देखने देता है।

दूसरा:performance-now node package. You can use it for dev performance testing.

तीसरा:Stack overflow post on measuring time/performance in js.

चौथा: आप console.time जैसी चीजों का उपयोग कर सकते()

0

मुझे लगता है कि समय देरी जहां यह हो रहा है पता चला है।

एक बार, मैंने क्लाइंट सॉकेट से नोड तक डेटा उत्सर्जित कर दिया है, मैं कुछ चेतावनी संदेश ("डेटा संसाधित") दिखाऊंगा। चेतावनी संदेश जीयूआई में प्रस्तुत करने के लिए समय ले रहा है।

यह चेतावनी संदेश नोड से सॉकेट तक प्रतिक्रिया डेटा को अवरुद्ध करता है।

आपकी मदद दोस्तों के लिए धन्यवाद।

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