सवाल क्या यह जांचने का एक विश्वसनीय तरीका है कि कोई सर्वर उपलब्ध है या नहीं?


मेरे आवेदन में मैं एक सर्वर पिंग कर रहा हूं और प्रतिक्रिया की प्रतीक्षा कर रहा हूं। मैं यह निर्धारित करने के लिए इसका उपयोग कर रहा हूं कि सर्वर उपलब्ध है और उत्तरदायी है या नहीं।

क्या यह उपलब्धता का निर्धारण करने का एक विश्वसनीय तरीका है? मुझे लगता है कि फ़ायरवॉल आईसीएमपी यातायात को फ़िल्टर कर सकता है ... क्या कोई और कमी है? क्या कोई और विश्वसनीय तरीका है?


89
2017-09-19 10:00


मूल




जवाब:


यह बताने का सबसे अच्छा तरीका है कि किसी भी दी गई रिमोट सेवा जिंदा है, इसे इस तरीके से अनुरोध करने के लिए कहा जाता है कि वास्तव में यह वास्तव में कुछ सही तरीके से काम कर रहा है।

एक उदाहरण के रूप में, मुझे हमेशा अपने वेब सर्वर से वास्तविक 'हेड' प्रतिक्रिया प्राप्त करने के लिए मेरे लोड-बैलेंसर्स मिलते हैं, यदि आप चाहें तो डीबी बॉक्स पर छोटे चयन के लिए भी ऐसा कर सकते हैं, या जो भी आपका वास्तविक सर्वर सेवा करता है। एक टिप के रूप में आप अपने वेब सर्वर पर 'ऑनलाइन.txt' (या जो भी नाम देना चाहते हैं) बना सकते हैं, क्या आपके एलबी उस फ़ाइल को पाने का प्रयास करते हैं और यदि यह विफल रहता है तो यह सर्वर को वीआईपी से हटा देता है, यह है एक ही फ़ाइल का नाम बदलकर अपने वीआईपी से मैन्युअल रूप से व्यक्तिगत सर्वरों को ले जाने का एक अच्छा तरीका है।

पिंग केवल पिंग्स का जवाब देने की क्षमता के लिए परीक्षण करता है, इसलिए यह बेस ओएस, आईपी स्टैक के कुछ हिस्सों और भौतिक लिंक हैं - लेकिन यह सब कुछ है, बाकी सब कुछ नीचे हो सकता है और आप नहीं जानते।

मुझे पता है कि यह नीचे उल्लिखित है, लेकिन यह बार-बार दोहराना भालू है।

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

जैसा कि ऊपर बताया गया है, यह ओएस (विशेष रूप से नेटवर्क स्टैक स्तर पर) द्वारा संभाला जाता है और इसलिए यह उन लोगों का जवाब देने के लिए ओएस कॉन्फ़िगरेशन पर निर्भर करता है या नहीं। यदि यह बंद है (एक सुरक्षा सावधानी?), तो आप दूसरे छोर से पिंग उत्तरों प्राप्त करने के बारे में कुछ भी नहीं कर सकते हैं। यही कारण है कि यह विश्वसनीय नहीं है।


137
2017-09-19 10:10



आदमी ने क्या कहा! मैं हमेशा ग्राहकों को सलाह देता हूं कि यह बताए जाने का सबसे अच्छा तरीका है कि कोई सर्वर वर्तमान में सेवा एक्स की पेशकश कर रहा है या नहीं अनुरोध सेवा एक्स। - MadHatter
हम वास्तव में हमारे ऐप्स में एक "परीक्षण" रीस्टफुल एपीआई बनाते हैं केवल इसके लिए। इसलिए हम जानते हैं कि यदि कोई ऐप ब्लाह / जो भी_एप / पल्स का जवाब देता है, सर्विसिंग अनुरोध करता है, और उसके पास आवश्यक सभी टूल्स हैं (डीबी, निर्भरता आदि) - tsykoduk
मैडहैटर में जोड़ने के लिए, अक्सर पिंग और अनुरोध करने का अच्छा विचार होता है। इस तरह आप तुरंत जान सकते हैं कि क्या आप नेटवर्क कनेक्टिविटी या सर्विस आउटेज से निपट रहे हैं ... कोई भी दूसरे की तुलना में पूरी तरह से अलग चीजें बनाने के लिए जाता है। - user606723
पिंग एक भरोसेमंद परीक्षण भी नहीं है कि सर्वर स्वयं पिंग का जवाब दे सकता है - अगर ऐसा नहीं होता है तो आप यह जानते हैं कि आपके और उसके बीच कुछ आईसीएमपी यातायात फ़िल्टर कर रहा है - Rob Moir
मान लें कि मशीन सामान्य परिस्थितियों में पिंग का जवाब देती है, आप कुछ प्रकार के ब्लूम फ़िल्टर के रूप में पिंग का उपयोग कर सकते हैं: यदि पिंग विफल हो जाती है, तो सेवा निश्चित रूप से नीचे है (आपके पास नेटवर्क समस्या है, क्योंकि हमने आमतौर पर पिंग काम स्थापित किए हैं)। हालांकि, अगर पिंग सेवा को सफल बनाता है तो इस जवाब में वर्णित अनुसार अभी भी नीचे हो सकता है - 3Doubloons


अधिकांश समय, हाँ, हालांकि:

  • कुछ सर्वर पिंग अनुरोध ब्लॉक

  • सिर्फ इसलिए कि सर्वर जवाब दे रहा है स्वचालित रूप से वेबसाइट का मतलब नहीं है (या जो भी सेवा आप उपयोग करने की उम्मीद करते हैं) काम कर रहा है, आपको यह भी जांचना चाहिए कि प्रतिक्रिया अपेक्षित सामग्री से मेल खाती है या नहीं।


10
2017-09-19 10:08





यह सच है कि कई अवसरों पर आईसीएमपी यातायात फ़िल्टर किया जाता है, इसलिए यह अविश्वसनीय हो सकता है ...

आपके द्वारा रुचि रखने वाले सेवा पोर्ट पर सर्वर को टेलनेट करने का एक बेहतर तरीका हो सकता है।

यानी टेलनेट 127.0.0.1 8080


5
2017-09-19 10:07





अगर सर्वर को केवल पिंग्स का जवाब देना आवश्यक है तो यह इसकी उपलब्धता निर्धारित करने का एक अच्छा तरीका है। यदि उदाहरण के लिए एक वेब सेवा प्रदान करने की आवश्यकता है तो आपको यह देखने के लिए कुछ प्रकार का परीक्षण करना चाहिए कि यह फाइल सर्विसेज आदि के लिए समान रूप से काम कर रहा है या नहीं।


5
2017-09-19 10:10





पिंग में 2 कमियां हैं:

  • पिंग आईसीएमपी भेजता है, जिसे फ़ायरवॉल द्वारा फ़िल्टर किया जा सकता है
  • आपके एप्लिकेशन का उपयोग करने वाला टीसीपी या udp पोर्ट व्यस्त या खुला नहीं हो सकता है - पिंग यह जांच नहीं करता है

एक बेहतर समाधान यह है कि सेवा अभी भी उपलब्ध है या नहीं, यह देखने के लिए सीधे अपने udp / tcp पोर्ट को जांचना है ... :-)


3
2017-09-19 19:20





परीक्षण और निगरानी के लिए विशेष उपकरण हैं Nagios / Icinga
इन उपकरणों के साथ आप (निश्चित रूप से) विभिन्न पिंग-टेस्ट के साथ जांच कर सकते हैं लेकिन आपकी सेवाओं पर भी जांच कर सकते हैं।

सभी चेक परिणाम को वर्गीकृत करने के लिए लौटे हुए मूल्य का उपयोग "अच्छा", "चेतावनी" और "महत्वपूर्ण" के रूप में कर सकते हैं और लगभग हर प्रोग्रामिंग भाषा में लिखे जा सकते हैं।

बेशक सेटअप करना आसान नहीं है (जैसे बिंदु और क्लिक करें), लेकिन अनुकूलन योग्य, विश्वसनीय और एक्स्टेंसिबल। विभिन्न लिनक्स और यूनिक्स वितरण पर अच्छी तरह से चलता है।


3
2017-09-19 18:24





जिन सेवाओं को आप ढूंढ रहे हैं उनका परीक्षण करें, बस सर्वर को पिंग करने का मतलब यह नहीं है कि सेवाएं काम कर रही हैं।

उदाहरण के लिए:

दर्जन वेबसाइटों के साथ एक वेबसर्वर की कल्पना करो, तो मुझे पता होना चाहिए कि वेबसाइट यूपी है या नहीं, मैंने खुद को PHP में एक छोटी सी लिपि बनाई और इसे हर 10 मिनट में चलाया।

लिपि अनुवर्ती -> है

<?php
    $website1 = "http://www.mywebsite.com/";
    $myWebsite = file_get_contents($website1);
    $message = 'My website' . $website1 . ' is DOWN at the moment.';
    if (empty($myWebsite)) mail('mail@server.com', 'Website is DOWN', $message);
?>

2
2017-11-28 15:42





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


2
2017-09-19 18:39