वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग · पाठ

वितरित प्रणालियों का ट्रेसिंग और डीबगिंग

वितरित परिवेश में अनेक Erlang नोड के बीच समस्याओं का निदान करने के लिए उन्नत ट्रेसिंग और डीबगिंग तकनीकों में दक्षता प्राप्त करें

पाठ 2, कुल 4 में से11 चरण

वितरित प्रणालियों का ट्रेसिंग और डीबगिंग, CoddyKit पर वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

वितरित Erlang का दोष-निवारण

एकल Erlang प्रक्रिया का दोष-निवारण करना पहले से ही रोचक है, लेकिन कई परस्पर जुड़े Erlang नोड में समस्याओं का निदान करना वास्तव में चुनौतीपूर्ण हो सकता है! ऐसा क्यों है?

  • समवर्तीता: कई प्रक्रियाएं समानांतर रूप से चलती हैं।
  • वितरण: प्रक्रियाएं अलग-अलग मशीनों पर फैली होती हैं।
  • अतुल्यकालिकता: संदेश भेजे जाते हैं, लेकिन हमेशा तुरंत प्राप्त नहीं होते।

इन जटिल सिस्टम के भीतर देखने में हमारी मदद करने के लिए Erlang शक्तिशाली अंतर्निर्मित उपकरण प्रदान करता है।

Erlang दोष-निवारक शुरू करना

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

आप दोष-निवारक को Erlang शेल से शुरू करते हैं। खुलने के बाद, जांच शुरू करने के लिए आप स्थानीय या दूरस्थ Erlang नोड से जुड़ सकते हैं।

1> debugger:start().
{ok,<0.88.0>}
2> % The debugger GUI will now appear.
3> % To connect to another node:
4> % debugger:start([{node, 'other_node@hostname'}]).

सक्रिय प्रक्रियाओं का निरीक्षण

जुड़ने के बाद, दोष-निवारक आपको चुने गए नोड पर चल रही किसी भी प्रक्रिया का चयन करने देता है। इसके बाद आप:

  • उसकी वर्तमान स्थिति देख सकते हैं (प्रक्रिया शब्दकोश, स्टैक अनुरेख)।
  • उसकी संदेश कतार (मेलबॉक्स) की जांच कर सकते हैं।
  • उन फ़ंक्शन पर विराम-बिंदु निर्धारित कर सकते हैं जिन्हें वह चला रही है।

किसी भी क्षण कोई प्रक्रिया क्या कर रही है या किसकी प्रतीक्षा कर रही है, यह समझने के लिए यह अत्यंत महत्वपूर्ण है।

स्थानीय फ़ंक्शन कॉल का अनुरेखण

दोष-निवारक की अनुरेखण क्षमताएं, जिन्हें अक्सर dbg मॉड्यूल के माध्यम से इस्तेमाल किया जाता है, आपको फ़ंक्शन कॉल की निगरानी करने देती हैं। आप विशिष्ट फ़ंक्शन का अनुरेखण कर सकते हैं और उनके तर्क तथा लौटाए गए मान देख सकते हैं।

आइए एक सरल मॉड्यूल का अनुरेखण करें। इसे कंपाइल करें, फिर इसके add/2 फ़ंक्शन का अनुरेखण करने के लिए dbg:tp/2 का उपयोग करें।

-module(my_math).
-export([add/2, multiply/2]).

add(A, B) ->
    A + B.

multiply(A, B) ->
    A * B.

% To run:
% 1> c(my_math).
% 2> dbg:tracer(), dbg:tp(my_math, add, 2, []).
% 3> my_math:add(5, 3).
% {trace, <0.78.0>, call, {my_math,add, [5,3]}}
% {trace, <0.78.0>, return_from, {my_math,add,2}, 8}
% 8
% 4> dbg:stop_clear().

नोड के बीच अनुरेखण

Erlang की शक्तिशाली विशेषताओं में से एक वितरित सिस्टम में अनुरेखण करने की क्षमता है। dbg मॉड्यूल को अन्य जुड़े हुए नोड पर होने वाली घटनाओं का अनुरेखण करने के लिए निर्देशित किया जा सकता है, जिससे आप उनके बीच निष्पादन और संदेशों के प्रवाह का अनुसरण कर सकते हैं।

जब किसी समस्या में अलग-अलग मशीनों पर मौजूद प्रक्रियाओं के बीच परस्पर क्रिया शामिल हो, तब यह आवश्यक होता है।

उदाहरण: दूरस्थ कॉल का अनुरेखण

कल्पना करें कि किसी दूरस्थ नोड पर आपकी एक 'worker' प्रक्रिया है। आप उस दूरस्थ नोड पर फ़ंक्शन का अनुरेखण करने के लिए अपने स्थानीय दोष-निवारक को निर्देश दे सकते हैं। यह एक सरल worker मॉड्यूल है।

यदि यह मॉड्यूल worker@remotehost पर चल रहा हो, तो नोड से जुड़ने के बाद आप अपने स्थानीय नोड से dbg:tp({'worker@remotehost', worker}, process_task, 1, []) का उपयोग करके इसके process_task/1 फ़ंक्शन का अनुरेखण कर सकते हैं।

-module(remote_worker).
-export([start_link/0, process_task/1]).

start_link() ->
    gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).

process_task(Task) ->
    io:format("~p processing task: ~p~n", [self(), Task]),
    timer:sleep(100), % Simulate work
    {ok, Task}.

% gen_server callbacks omitted for brevity.
% This module would be running on a remote node.

TTB से अनुरेखण का विश्लेषण

जटिल स्थितियों में, अनुरेखण परिणाम को सीधे शेल या दोष-निवारक GUI में देखना भारी पड़ सकता है। Trace Tool Builder (TTB) बाद में विस्तृत विश्लेषण के लिए अनुरेखण को किसी फ़ाइल में रिकॉर्ड करके सहायता करता है।

TTB के साथ आप घटनाओं को दृश्य रूप से दोबारा चला और फ़िल्टर कर सकते हैं, जिससे समय के साथ सिस्टम के व्यवहार की अधिक स्पष्ट तस्वीर मिलती है। घटना के बाद दोष-निवारण के लिए यह उत्कृष्ट है।

1> ttb:tracer().
% Start tracing and save to a file.
2> dbg:tp(my_module, my_function, 1, []).
3> my_module:my_function(data).
% ... run your system ...
4> ttb:stop().
% Later, to analyze:
5> ttb:start().
6> ttb:p(ttb_file_name, []).

Redbug से त्वरित दोष-निवारण

हालांकि dbg शक्तिशाली है, लेकिन इससे अतिरिक्त भार पड़ सकता है। चलते हुए सिस्टम, यहां तक कि उत्पादन सिस्टम में भी, त्वरित, हल्के और तुरंत किए जाने वाले अनुरेखण के लिए अक्सर Redbug को प्राथमिकता दी जाती है।

Redbug आपको विशिष्ट फ़ंक्शन की कॉल का अनुरेखण करने और न्यूनतम प्रभाव के साथ उनके तर्क तथा लौटाए गए मान देखने देता है। धारणाओं की तुरंत पुष्टि करने या हाल की गतिविधि का सटीक पता लगाने के लिए यह बिल्कुल उपयुक्त है।

1> redbug:start("my_module:my_function/1").
% Trace my_module:my_function/1
2> my_module:my_function(hello).
% Redbug will print trace output to the shell.
3> redbug:stop().

दूरस्थ अनुरेखण के लिए Redbug

dbg की तरह Redbug भी दूरस्थ नोड पर फ़ंक्शन का अनुरेखण कर सकता है। इससे सिस्टम को बंद किए बिना या भारी दोष-निवारक संलग्न किए बिना किसी अन्य सर्वर पर किसी विशिष्ट प्रक्रिया या मॉड्यूल में क्या हो रहा है, यह जल्दी जांचना संभव होता है।

यह वह मॉड्यूल है जिसका हम Redbug का उपयोग करके दूरस्थ नोड पर अनुरेखण कर सकते हैं।

-module(sensor_data).
-export([collect/1]).

collect(SensorId) ->
    Value = erlang:phash2(SensorId, 100), % Simulate reading
    io:format("Sensor ~p collected value: ~p~n", [SensorId, Value]),
    Value.

% To trace remotely (assuming nodes are connected):
% From node 'local@host':
% redbug:start("sensor_data:collect/1", [{node, 'remote@host'}]).
% Then, on 'remote@host':
% sensor_data:collect(temperature_sensor).

वितरित दोष-निवारण की जांच

Erlang के वितरित दोष-निवारण उपकरणों के बारे में निम्नलिखित में से कौन-से कथन सही हैं?

पुनरावलोकन: अनुरेखण और दोष-निवारण

अब आपने वितरित Erlang प्रणालियों की निगरानी और त्रुटि-निवारण के लिए महत्वपूर्ण उपकरणों का परिचय प्राप्त कर लिया है:

  • गहन निरीक्षण और निगरानी के लिए Erlang Debugger (dbg)।
  • जटिल निगरानियों को रिकॉर्ड करने और दृश्य रूप में प्रस्तुत करने के लिए TTB।
  • हल्की, तुरंत की जाने वाली निगरानी के लिए Redbug, जिसे उत्पादन परिवेश में भी उपयोग किया जा सकता है।

Erlang के साथ मजबूत और दोष-सहिष्णु वितरित अनुप्रयोग बनाने तथा उनका रखरखाव करने के लिए इन उपकरणों में दक्षता आवश्यक है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Erlang सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “वितरित प्रणालियों का ट्रेसिंग और डीबगिंग” पाठ निःशुल्क है?

हाँ — वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “वितरित प्रणालियों का ट्रेसिंग और डीबगिंग” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“वितरित प्रणालियों का ट्रेसिंग और डीबगिंग” में मैं क्या सीखूँगा?

वितरित परिवेश में अनेक Erlang नोड के बीच समस्याओं का निदान करने के लिए उन्नत ट्रेसिंग और डीबगिंग तकनीकों में दक्षता प्राप्त करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“वितरित प्रणालियों का ट्रेसिंग और डीबगिंग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Erlang प्रोफ़ाइल विश्लेषण तकनीकें
  2. वितरित प्रणालियों का ट्रेसिंग और डीबगिंग
  3. मेट्रिक्स और निगरानी एकीकरण
  4. मेमोरी विश्लेषण और कचरा-संग्रहण समायोजन
← वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पर वापस जाएँ