Node.js প্রক্সি ডিবাগিং এবং সমস্যা সমাধান করা

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

প্রক্সিতে যোগ করা যেকোনো Node.js কোড Edge-এ ডিপ্লয় করার আগে, সেটি ঠিকমতো কাজ করছে কিনা তা নিশ্চিত করা একটি ভালো অভ্যাস। এই টপিকে, ডিপ্লয় করার পর Node.js অ্যাপ্লিকেশন অন্তর্ভুক্ত থাকা প্রক্সিগুলোকে ডিবাগ ও ট্রাবলশুট করার উপায় নিয়ে আলোচনা করা হয়েছে।

পারফরম্যান্স উন্নত করতে কানেকশন পুলের আকার বৃদ্ধি করা

যদি আপনি ধীর পারফরম্যান্স লক্ষ্য করেন, তাহলে maxSockets ব্যবহার করে ডিফল্ট Node.js কানেকশন পুলের আকার বাড়িয়ে, অথবা সকেট পুলিং সম্পূর্ণরূপে নিষ্ক্রিয় করে সমস্যাটি সমাধান করতে পারেন। আরও তথ্য এবং উদাহরণ কোডের জন্য, Apigee কমিউনিটিতে “Node.js Performance Tips: Socket Pooling” দেখুন।

Node.js লগ দেখা

আপনার Node.js অ্যাপ্লিকেশনের লগ তথ্য দেখতে:

  1. মূল এপিআই প্রক্সি পেজে, আপনি যে প্রক্সিটি দেখতে চান সেটিতে ক্লিক করুন।
  2. নির্বাচিত প্রক্সির সারাংশ পৃষ্ঠায়, টুলবারের ডানদিকে থাকা Node.js Logs-এ ক্লিক করুন।

লগস পেজে, আপনি দেখার জন্য লগের একটি সময়সীমা নির্বাচন করতে পারেন, যেমনটি নিচে দেখানো হয়েছে। লগগুলিতে HTTP মেথড কল, কলের সাফল্য বা ব্যর্থতা, console.log মেসেজ ইত্যাদি রেকর্ড করা থাকে। সার্চ ফিল্ডে একটি সার্চ স্ট্রিং লিখুন, তাহলে সেই স্ট্রিংটি ধারণকারী সমস্ত লগ এন্ট্রি দেখতে পাবেন।

ট্রেস টুল ব্যবহার করে

ট্রেস টুলটি সাধারণ প্রক্সি ডিবাগিংয়ের জন্য উপযোগী। ট্রেস টুল ব্যবহারের বিস্তারিত তথ্যের জন্য, “ট্রেস টুলের ব্যবহার” দেখুন।

প্রিন্টিং কনসোল আউটপুট

আপনি আপনার Node.js কোডে console.log স্টেটমেন্ট যুক্ত করতে পারেন এবং ট্রেস টুলে এর আউটপুট দেখতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত স্টেটমেন্টটি config.user ভেরিয়েবলের মান প্রিন্ট করে:

console.log('Logging in as %s', config.username);

ট্রেস টুলে console.log মেসেজগুলোর আউটপুট দেখতে, ট্রেস টুলে আপনার API কল করুন এবং আউটপুট প্যানেলটি খুলতে ‘Output from all Transactions’-এ ক্লিক করুন:

ধরে নিন আপনি নিম্নলিখিত কোডটি চালিয়েছেন...

var http = require('http');

console.log('node.js application starting...');

var svr = http.createServer(function(req, resp) {
    resp.end('Hello, World!');
});

svr.listen(9000, function() {
    console.log('Node HTTP server is listening');
});

... কনসোল স্টেটমেন্টগুলো প্যানেলে প্রদর্শিত হয়:

Nginx টার্গেট টাইমআউট সেটিংস কনফিগার করা

আপনি যদি প্রক্সি হিসেবে Nginx ব্যবহার করেন এবং "Bad Gateway" ত্রুটি দেখতে পান, তাহলে এখানে ব্যাখ্যা করা অনুযায়ী Nginx প্রক্সি টাইমআউট কনফিগারেশন বাড়ানোর চেষ্টা করুন:

উদাহরণস্বরূপ:

proxy_connect_timeout       60;
proxy_read_timeout          120;

সার্ভার সাড়া দিতে কতক্ষণ সময় নেয়, তার উপর ভিত্তি করে আপনার আদর্শ টাইমআউট কনফিগারেশন নির্ধারণ করা যেতে পারে। উদাহরণস্বরূপ, একটি যুক্তিসঙ্গত বাফার প্রদানের জন্য ৪৫-৬০ সেকেন্ডের একটি রিড টাইমআউট আদর্শ হতে পারে।

Apigee টার্গেট টাইমআউট সেটিংস কনফিগার করা

এছাড়াও আপনি TargetEndpoint-এর HttpTargetConnection এলিমেন্টে Apigee-এর ডিফল্ট টাইমআউট মানগুলো কনফিগার করতে পারেন। ডিফল্ট মানগুলো হলো:

connect.timeout.millis - 60 seconds
io.timeout.millis - 120 seconds
<HTTPTargetConnection>
    <Properties>
        <Property name="connect.timeout.millis">5000</Property>
        <Property name="io.timeout.millis">5000</Property>
    </Properties>
    <URL>http://www.google.com</URL>
</HTTPTargetConnection>

এন্ডপয়েন্ট প্রোপার্টি রেফারেন্সও দেখুন।

আরও তথ্যের জন্য

ডিবাগিং সম্পর্কে আরও জানতে দেখুন:

পরবর্তী পদক্ষেপ

Apigee Edge-এ Node.js মডিউল সাপোর্ট, যার মধ্যে HTTP/HTTPS, TLS এবং অন্যান্য উন্নত বিষয়গুলির সাপোর্ট সম্পর্কিত তথ্য অন্তর্ভুক্ত রয়েছে, সে সম্পর্কে জানতে “Understanding Edge support for Node.js modules” দেখুন।

,

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

প্রক্সিতে যোগ করা যেকোনো Node.js কোড Edge-এ ডিপ্লয় করার আগে, সেটি ঠিকমতো কাজ করছে কিনা তা নিশ্চিত করা একটি ভালো অভ্যাস। এই টপিকে, ডিপ্লয় করার পর Node.js অ্যাপ্লিকেশন অন্তর্ভুক্ত থাকা প্রক্সিগুলোকে ডিবাগ ও ট্রাবলশুট করার উপায় নিয়ে আলোচনা করা হয়েছে।

পারফরম্যান্স উন্নত করতে কানেকশন পুলের আকার বৃদ্ধি করা

যদি আপনি ধীর পারফরম্যান্স লক্ষ্য করেন, তাহলে maxSockets ব্যবহার করে ডিফল্ট Node.js কানেকশন পুলের আকার বাড়িয়ে, অথবা সকেট পুলিং সম্পূর্ণরূপে নিষ্ক্রিয় করে সমস্যাটি সমাধান করতে পারেন। আরও তথ্য এবং উদাহরণ কোডের জন্য, Apigee কমিউনিটিতে “Node.js Performance Tips: Socket Pooling” দেখুন।

Node.js লগ দেখা

আপনার Node.js অ্যাপ্লিকেশনের লগ তথ্য দেখতে:

  1. মূল এপিআই প্রক্সি পেজে, আপনি যে প্রক্সিটি দেখতে চান সেটিতে ক্লিক করুন।
  2. নির্বাচিত প্রক্সির সারাংশ পৃষ্ঠায়, টুলবারের ডানদিকে থাকা Node.js Logs-এ ক্লিক করুন।

লগস পেজে, আপনি দেখার জন্য লগের একটি সময়সীমা নির্বাচন করতে পারেন, যেমনটি নিচে দেখানো হয়েছে। লগগুলিতে HTTP মেথড কল, কলের সাফল্য বা ব্যর্থতা, console.log মেসেজ ইত্যাদি রেকর্ড করা থাকে। সার্চ ফিল্ডে একটি সার্চ স্ট্রিং লিখুন, তাহলে সেই স্ট্রিংটি ধারণকারী সমস্ত লগ এন্ট্রি দেখতে পাবেন।

ট্রেস টুল ব্যবহার করে

ট্রেস টুলটি সাধারণ প্রক্সি ডিবাগিংয়ের জন্য উপযোগী। ট্রেস টুল ব্যবহারের বিস্তারিত তথ্যের জন্য, “ট্রেস টুলের ব্যবহার” দেখুন।

প্রিন্টিং কনসোল আউটপুট

আপনি আপনার Node.js কোডে console.log স্টেটমেন্ট যুক্ত করতে পারেন এবং ট্রেস টুলে এর আউটপুট দেখতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত স্টেটমেন্টটি config.user ভেরিয়েবলের মান প্রিন্ট করে:

console.log('Logging in as %s', config.username);

ট্রেস টুলে console.log মেসেজগুলোর আউটপুট দেখতে, ট্রেস টুলে আপনার API কল করুন এবং আউটপুট প্যানেলটি খুলতে ‘Output from all Transactions’-এ ক্লিক করুন:

ধরে নিন আপনি নিম্নলিখিত কোডটি চালিয়েছেন...

var http = require('http');

console.log('node.js application starting...');

var svr = http.createServer(function(req, resp) {
    resp.end('Hello, World!');
});

svr.listen(9000, function() {
    console.log('Node HTTP server is listening');
});

... কনসোল স্টেটমেন্টগুলো প্যানেলে প্রদর্শিত হয়:

Nginx টার্গেট টাইমআউট সেটিংস কনফিগার করা

আপনি যদি প্রক্সি হিসেবে Nginx ব্যবহার করেন এবং "Bad Gateway" ত্রুটি দেখতে পান, তাহলে এখানে ব্যাখ্যা করা অনুযায়ী Nginx প্রক্সি টাইমআউট কনফিগারেশন বাড়ানোর চেষ্টা করুন:

উদাহরণস্বরূপ:

proxy_connect_timeout       60;
proxy_read_timeout          120;

সার্ভার সাড়া দিতে কতক্ষণ সময় নেয়, তার উপর ভিত্তি করে আপনার আদর্শ টাইমআউট কনফিগারেশন নির্ধারণ করা যেতে পারে। উদাহরণস্বরূপ, একটি যুক্তিসঙ্গত বাফার প্রদানের জন্য ৪৫-৬০ সেকেন্ডের একটি রিড টাইমআউট আদর্শ হতে পারে।

Apigee টার্গেট টাইমআউট সেটিংস কনফিগার করা

এছাড়াও আপনি TargetEndpoint-এর HttpTargetConnection এলিমেন্টে Apigee-এর ডিফল্ট টাইমআউট মানগুলো কনফিগার করতে পারেন। ডিফল্ট মানগুলো হলো:

connect.timeout.millis - 60 seconds
io.timeout.millis - 120 seconds
<HTTPTargetConnection>
    <Properties>
        <Property name="connect.timeout.millis">5000</Property>
        <Property name="io.timeout.millis">5000</Property>
    </Properties>
    <URL>http://www.google.com</URL>
</HTTPTargetConnection>

এন্ডপয়েন্ট প্রোপার্টি রেফারেন্সও দেখুন।

আরও তথ্যের জন্য

ডিবাগিং সম্পর্কে আরও জানতে দেখুন:

পরবর্তী পদক্ষেপ

Apigee Edge-এ Node.js মডিউল সাপোর্ট, যার মধ্যে HTTP/HTTPS, TLS এবং অন্যান্য উন্নত বিষয়গুলির সাপোর্ট সম্পর্কিত তথ্য অন্তর্ভুক্ত রয়েছে, সে সম্পর্কে জানতে “Understanding Edge support for Node.js modules” দেখুন।