क्या पिंग एक विश्वसनीय तरीका है कि सर्वर उपलब्ध है या नहीं?


96

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

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

जवाबों:


139

यह बताने का सबसे अच्छा तरीका है कि यदि कोई दी गई दूरस्थ सेवा जीवित है, तो उसे उस तरीके से अनुरोध करने के लिए कहना है - जो वास्तव में किसी चीज़ को सही तरीके से जानने का एकमात्र तरीका है।

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

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

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

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

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


34
आदमी ने क्या कहा! मैं हमेशा ग्राहकों को सलाह देता हूं कि यह बताने का सबसे अच्छा तरीका है कि क्या कोई सर्वर वर्तमान में सेवा प्रदान कर रहा है, सेवा X का अनुरोध करना है
MadHatter

5
हम वास्तव में हमारे क्षुधा में एक "परीक्षण" RESTful API का निर्माण सिर्फ इस बात के लिए। तो हम जानते हैं कि अगर कोई ऐप ब्लाॅक / जो कुछ भी / पल्स है, वह सर्विसिंग रिक्वेस्ट का जवाब देता है, और उसके सभी टूल्स हैं, जिनकी उसे जरूरत है (DB, निर्भरता आदि)
tsykoduk

5
MadHatter में जोड़ने के लिए, अक्सर एक पिंग और एक अनुरोध करने के लिए एक अच्छा विचार है। इस तरह से आप तुरंत जान सकते हैं कि आप नेटवर्क कनेक्टिविटी या सर्विस आउटेज से निपट रहे हैं ... या तो एक दूसरे की तुलना में पूरी तरह से अलग चीजें बनाने की प्रवृत्ति है।
user606723

पिंग एक विश्वसनीय परीक्षण भी नहीं है कि सर्वर स्वयं पिंग का जवाब दे सकता है - यदि यह तब नहीं होता है, तो आप सभी जानते हैं कि आपके बीच कुछ है और यह ICMP ट्रैफ़िक को फ़िल्टर कर रहा है
Rob Moir

4
मान लें कि मशीन सामान्य परिस्थितियों में पिंग के प्रति प्रतिक्रिया करती है, तो आप पिंग का उपयोग किसी प्रकार के खिलने वाले फिल्टर के रूप में कर सकते हैं: यदि पिंग विफल हो जाता है, तो सेवा निश्चित रूप से नीचे है (आपके पास एक नेटवर्क समस्या है, क्योंकि हमने आमतौर पर पिंग कार्यों की स्थापना की है)। हालाँकि, अगर पिंग सक्सेज हो जाता है, तो सेवा अभी भी इस उत्तर में बताई जा सकती है
3Doubloons

10

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

  • कुछ सर्वर पिंग अनुरोधों को रोकते हैं

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


5

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

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

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


5

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


3

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

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

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


3

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

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

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


2

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

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

दर्जनों वेबसाइटों के साथ एक वेबसर्वर की कल्पना करें, फिर मुझे यह जानने की जरूरत है कि क्या वेबसाइटें यूपी हैं, मैंने खुद को 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

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


1

हम pingएक प्रीचेक करने के लिए उपयोग करते हैं, कि हमारे सिस्टमड सेवा को लॉन्च करने से पहले मेजबान संचालित और पहुंच योग्य है, जो इसके लिए एक ssh कनेक्शन का प्रयास करता है। यह डिबगिंग में कुछ समय बचाता है, क्योंकि systemctl startकमांड तुरंत विफल हो जाएगा, बजाय चुपचाप विफल हो जाएगा और जर्नलट जंगल में खो जाएगा।

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


0

बस मेरे दो सेंट: हमारे पास एक विरासत अनुप्रयोग है जो इस पद्धति का उपयोग करता है, और इसे सेवा करना था क्योंकि सेवा की उपलब्धता निर्धारित करने के लिए पिंग पर्याप्त नहीं था ।

पिंग केवल दिखाता है कि सर्वर सुनने में सक्षम है, लेकिन हमारे मामले में सेवा मानव हस्तक्षेप के बिना शुरू करने में असमर्थ थी।

परिणामस्वरूप इकाइयाँ, जो सर्वर को उपलब्ध मानती थीं, कनेक्ट करने और टाइमआउट करने का प्रयास कर रही थीं। हमारे "सर्वर अनुपलब्ध" संदेश प्रदर्शित करने के बजाय।

-

हमारा वर्तमान अनुप्रयोग, जो एक वेब सर्वर पर XMLHTTPRequests के माध्यम से संचार करता है, एक गठित संदेश भेजता है जो सर्वर एक स्थिति कोड के साथ प्रतिक्रिया देगा। स्थिति कोड की गणना सर्वर द्वारा कई जाँचों को करने के लिए की जाती है ताकि यह सुनिश्चित हो सके कि विभिन्न सबसिस्टम ऑनलाइन हैं (डीबी, आवश्यक निर्देशिकाएं लेखन योग्य हैं, आदि)


0

यदि सामान्य परिस्थितियों में आपका सर्वर पिंग के प्रति प्रतिक्रिया करता है, तो यह जांचने के लिए एक मिनट के अंतराल पर इसे पिंग करने के लिए उपयोगी है कि क्या यह प्रतिक्रिया करता है। यह निश्चित रूप से केवल आपको बताता है कि उस आईपी पते पर एक सर्वर है और पिंग के स्रोत से गंतव्य तक एक नेटवर्क पथ है। प्रतिक्रिया समय के लिए थ्रेशोल्ड सेट करने से आप नेटवर्क की स्थिति पर भी नजर रख सकते हैं। यदि आप इंटरनेट पर किसी सर्वर को पिंग कर रहे हैं, तो नेटवर्क को ठीक करने के लिए आप बहुत कम कर सकते हैं, लेकिन यदि कोई ग्राहक शिकायत करने के लिए कहता है, तो आप पहले से ही समस्या से अवगत होंगे। इसके अलावा google.com को पिंग करना भी उपयोगी है। यदि आप और Google दोनों नीचे हैं, तो कुछ हो रहा है।

जैसा कि दूसरों ने उल्लेख किया है, यह निगरानी करना महत्वपूर्ण है कि आप जो सेवा प्रदान कर रहे हैं वह प्रतिक्रिया दे रही है और इसका प्रदर्शन ठीक है। यानी आप यह जांचना चाहेंगे कि एक वेब युग जो आमतौर पर एक सेकंड में प्रतिक्रिया करता है, अब मैं 10 सेकंड का जवाब दे रहा हूं।

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

आप निगरानी के साथ पागल हो सकते हैं, इसलिए केवल यह बताने के लिए पर्याप्त निगरानी करें कि कब कुछ बुरा हुआ है या खतरनाक हो रहा है। यानी बहुत अधिक स्वैपिंग,> 90% डिस्क उपयोग, हाई डिस्क io, विस्तारित अवधि के लिए 100% सीपीयू और याद रखें कि निगरानी केवल सेवा हमले का एक संकेत है जो बहुत धीरे-धीरे किया जाता है।


0

पिंग (पैकेट इंटरनेट ग्रॉपर) आपको यह बताता है कि क्या आपका सिस्टम उस सिस्टम के साथ संचार कर रहा है जिसके साथ आप नेटवर्क पर कनेक्शन स्थापित करना चाहते हैं। यह भी pings, इसका मतलब यह नहीं है कि उदाहरण के लिए सेवा RemoteRegistry सेवा चल रही है।

हालांकि, किसी भी मुद्दे को ठीक करने के लिए पिंग आवश्यक है। आप किसी भी समस्या को दूर से ठीक कर सकते हैं। इसलिए, पिंग का अपना महत्व है।


-3

मेरी स्क्रिप्ट में सबसे अच्छा तरीका है

#rsh servername.com "date"
Mon Sep 19 04:42:20 PDT 2011

rsh की तरह rsh विकल्प के स्थान पर उपयोग किया जा सकता है। यह सुनिश्चित करता है कि आपका रिमोट सिस्टम पूरी तरह से बूट है और आप इस पर कमांड चला सकते हैं। साधारण पिंग बूट के दौरान पर्याप्त नहीं है जब नेटवर्क सेवाएं शुरू की जाती हैं, तो सिस्टम पिंग का जवाब देना शुरू कर देता है।


3
rsh? वास्तव में? sshइसके बजाय उपयोग क्यों नहीं ?
जोआचिम सॉर

5
rshबनाम sshएक तरफ, कैसे अमल करने के लिए सक्षम किया जा रहा करता है date(यह मानते हुए आप कर रहे हैं, के साथ शुरू करने के लिए) चल रहा है और अनुरोध का उत्तर देने के लिए सक्षम है या नहीं एक वेब सर्वर, एसएमटीपी सर्वर, DNS सर्वर, स्थानीय डेटाबेस सर्वर या whatnot के बारे में कुछ भी कहना? वास्तव में उस विशिष्ट सेवा के लिए पूछना जो आप उपलब्धता की पुष्टि करना चाहते हैं (जो कि एक दूरस्थ शेल हो सकती है, लेकिन निश्चित रूप से होना जरूरी नहीं है)।
बजे एक CVn

-3

जब मैं एक विंडोज़ सर्वर को रिबूट करता हूं तो मैं कमांड प्रॉम्प्ट बॉक्स खोलता हूं और दर्ज करता हूं

ping <box> -t

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


7
इसका मतलब यह नहीं है कि यह वास्तविक काम करने के लिए उपलब्ध है, बस यह पिंग का जवाब दे रहा है।
user9517

शायद। यह हमेशा मुझे लगता है कि मैं सर्वर पर लॉग इन कर सकता हूं और मुझे कभी भी इसकी आवश्यकता है।
डेव

सर्वर के लिए पिंग का जवाब देना पूरी तरह से संभव है, लेकिन किसी भी उच्च स्तरीय नेटवर्क फ़ंक्शंस को शुरू करने के लिए (अभी तक या बिल्कुल भी नहीं)। केवल पिंग परीक्षण पिंग है। और शायद नाम का रिज़ॉल्यूशन अगर आप IP के बजाय नाम से पिंग करते हैं
Rob Moir

मेरे पास कई अवसर हैं जहां एक सर्वर ने पिंग्स को जवाब दिया लेकिन लॉगऑन सहित किसी अन्य प्रकार के अनुरोध को सर्वर में विफल कर दिया। एक पिंग यह बताने का एक बहुत ही क्रूड साधन हो सकता है जब सर्वर ने वापस आना शुरू कर दिया है, लेकिन यह सब है। बेशक कि सर्वर मान रहा है भी पिंग्स का जवाब।
जॉन गार्डनियर्स 3
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.