यूडीपी एक पूरी तरह व्यवहार्य प्रोटोकॉल है। यह सही नौकरी के लिए सही उपकरण का वही पुराना मामला है!
यदि आपके पास एक ऐसा प्रोग्राम है जो यूडीपी डेटाग्राम के लिए इंतजार कर रहा है, और फिर किसी अन्य के लिए प्रतीक्षा करने से पहले उन्हें संसाधित करने के लिए चला जाता है, तो आपके विलुप्त होने वाले प्रोसेसिंग समय को डेटाग्राम की सबसे बुरी स्थिति आगमन दर से हमेशा तेज होना चाहिए। यदि ऐसा नहीं है, तो यूडीपी सॉकेट प्राप्त करने के लिए कतार भरना शुरू हो जाएगा।
इसे छोटे विस्फोटों के लिए सहन किया जा सकता है। कतार ठीक वही करता है जो इसे करने के लिए किया जाता है - कतार डेटाग्राम जब तक आप तैयार न हों। लेकिन अगर औसत आगमन दर नियमित रूप से कतार में बैकलॉग का कारण बनती है, तो यह आपके कार्यक्रम को फिर से डिजाइन करने का समय है। यहां दो मुख्य विकल्प हैं: चालाक प्रोग्रामिंग तकनीकों के माध्यम से विलुप्त प्रसंस्करण समय को कम करें, और/या अपने कार्यक्रम को बहु-थ्रेड करें। आपके कार्यक्रम के कई उदाहरणों में संतुलित संतुलन भी नियोजित किया जा सकता है।
जैसा कि बताया गया है, लिनक्स पर आप यूपीपी के बारे में स्थिति प्राप्त करने के लिए प्रो फाइल सिस्टम की जांच कर सकते हैं। उदाहरण के लिए, अगर मैं /proc/net/udp
नोड cat
, मैं कुछ इस तरह मिलती है: इस से
$ cat /proc/net/udp
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode ref pointer drops
40: 00000000:0202 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 3466 2 ffff88013abc8340 0
67: 00000000:231D 00000000:0000 07 00000000:0001E4C8 00:00000000 00000000 1006 0 16940862 2 ffff88013abc9040 2237
122: 00000000:30D4 00000000:0000 07 00000000:00000000 00:00000000 00000000 1006 0 912865 2 ffff88013abc8d00 0
, मैं देख सकता है कि उपयोगकर्ता आईडी 1006 के स्वामित्व वाले एक सॉकेट, पोर्ट पर ध्यान दे रहा है 0x231D (8989) और प्राप्त होने वाले कतार लगभग 128 केबी है। चूंकि 128 केबी मेरे सिस्टम पर अधिकतम आकार है, यह मुझे बताता है कि आने वाले डेटाग्राम को बनाए रखने में मेरा प्रोग्राम बेहद कमजोर है। अब तक 2237 बूंदें हुई हैं, जिसका अर्थ है कि यूडीपी परत सॉकेट कतार में कोई और डेटाग्राम नहीं डाल सकती है, और उन्हें छोड़ना चाहिए।
आप जैसे समय के साथ अपने कार्यक्रम के व्यवहार देख सकते हैं का उपयोग करते हुए:
watch -d 'cat /proc/net/udp|grep 00000000:231D'
भी ध्यान दें कि netstat कमांड एक ही बात के बारे में करता है: netstat -c --udp -an
मेरी weenie कार्यक्रम के लिए मेरे समाधान, बहु धागा करने के लिए किया जाएगा।
चीयर्स!
धन्यवाद rx_queue के लिए, आराम के लिए - अद्यतन) –
@Juliano कौन कहता है कि वह उपयोग करने के लिए प्रोटोकॉल चुनाव कर सकते हैं? हो सकता है कि वह मौजूदा ग्राहकों की सेवा के लिए एक udp आधारित प्रोटोकॉल को कार्यान्वित कर रहा हो। – steffen
पोस्टर यूडीपी आंकड़ों की निगरानी के बारे में जानना चाहता है, न कि प्रोटोकॉल का उपयोग करने के विचारों के लिए। पहली बार यह पहचानकर कि परतों के नुकसान में कहां हो रहा है, कोई एक फिक्स पर काम कर सकता है। – RickS