বার্তা প্রসেসরে I/O টাইমআউট কনফিগার করা হচ্ছে

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

এই ডকুমেন্টটিতে Apigee Edge Message Processors-এর জন্য I/O টাইমআউট কীভাবে কনফিগার করতে হয়, তা ব্যাখ্যা করা হয়েছে।

মেসেজ প্রসেসরের I/O টাইমআউট হলো সেই সময়কাল, যা টাইমআউট হওয়ার আগে পর্যন্ত মেসেজ প্রসেসরটি হয় ব্যাকএন্ড সার্ভার থেকে একটি প্রতিক্রিয়া পাওয়ার জন্য, অথবা ব্যাকএন্ড সার্ভারে একটি অনুরোধ লেখার জন্য সকেটটি প্রস্তুত হওয়ার জন্য অপেক্ষা করে।

মেসেজ প্রসেসর I/O টাইমআউটের ডিফল্ট মান হলো 55 seconds । এই টাইমআউট সময়কালটি টার্গেট এন্ডপয়েন্ট কনফিগারেশনে এবং আপনার এপিআই প্রক্সির সার্ভিসকলআউট পলিসিতে কনফিগার করা ব্যাকএন্ড সার্ভারগুলোর জন্য প্রযোজ্য।

আপনার প্রয়োজন অনুযায়ী মেসেজ প্রসেসরগুলির I/O টাইমআউট ডিফল্ট মান 55 seconds থেকে বাড়ানো বা কমানো যেতে পারে। এটি নিম্নলিখিত স্থানগুলিতে কনফিগার করা যায়:

  • এপিআই প্রক্সিতে
    • লক্ষ্য শেষবিন্দু
    • সার্ভিসকলআউট নীতি
  • মেসেজ প্রসেসরে

নিম্নলিখিত প্রোপার্টিগুলো মেসেজ প্রসেসরগুলোর I/O টাইমআউট নিয়ন্ত্রণ করে:

সম্পত্তির নাম অবস্থান বর্ণনা
io.timeout.millis

এপিআই প্রক্সি:

  • লক্ষ্য শেষবিন্দু
  • পরিষেবা কলআউট নীতি

এটিই সর্বোচ্চ সময়, যার জন্য মেসেজ প্রসেসর নিম্নলিখিত কাজগুলো করে থাকে:

  • সংযোগ স্থাপন এবং ব্যাকএন্ড সার্ভারে অনুরোধ পাঠানোর পর, সেখান থেকে প্রতিক্রিয়া পাওয়ার জন্য অপেক্ষা করে অথবা
  • ব্যাকএন্ড সার্ভারে অনুরোধ পাঠানোর জন্য মেসেজ প্রসেসরের সকেট প্রস্তুত হওয়ার অপেক্ষা করে।

এই টাইমআউট সময়ের মধ্যে ব্যাকএন্ড সার্ভার থেকে কোনো সাড়া না পাওয়া গেলে, মেসেজ প্রসেসরটি টাইমআউট হয়ে যায়।

ডিফল্টরূপে, এই প্রপার্টিটি মেসেজ প্রসেসরের HTTPTransport.io.timeout.millis প্রপার্টির জন্য সেট করা মানটি গ্রহণ করে। এর ডিফল্ট মান হলো 55 seconds

যদি কোনো নির্দিষ্ট এপিআই প্রক্সির জন্য এই প্রপার্টিটি একটি নতুন টাইমআউট ভ্যালু দিয়ে পরিবর্তন করা হয়, তাহলে শুধুমাত্র সেই এপিআই প্রক্সিটিই প্রভাবিত হবে।

HTTPTransport.io.timeout.millis বার্তা প্রসেসর

এটিই সর্বোচ্চ সময়, যার জন্য মেসেজ প্রসেসর নিম্নলিখিত কাজগুলো করে থাকে:

  • সংযোগ স্থাপন এবং ব্যাকএন্ড সার্ভারে অনুরোধ পাঠানোর পর, সেখান থেকে প্রতিক্রিয়া পাওয়ার জন্য অপেক্ষা করে অথবা
  • ব্যাকএন্ড সার্ভারে অনুরোধ পাঠানোর জন্য মেসেজ প্রসেসরের সকেট প্রস্তুত হওয়ার অপেক্ষা করে।

এই টাইমআউট সময়ের মধ্যে ব্যাকএন্ড সার্ভার থেকে কোনো সাড়া না পাওয়া গেলে, মেসেজ প্রসেসরটি টাইমআউট হয়ে যায়।

এই মেসেজ প্রসেসরে চলমান সমস্ত এপিআই প্রক্সির জন্য এই প্রপার্টিটি ব্যবহৃত হয়।

এই প্রপার্টির ডিফল্ট মান হলো 55 seconds

আপনি হয় "মেসেজ প্রসেসরে I/O টাইমআউট কনফিগার করা" অংশে ব্যাখ্যা করা পদ্ধতি অনুযায়ী এই প্রপার্টিটি পরিবর্তন করতে পারেন, অথবা API প্রক্সি লেভেলে io.timeout.millis প্রপার্টি সেট করে এই মানটি ওভাররাইট করতে পারেন।

শুরু করার আগে

এই নথিতে বর্ণিত ধাপগুলো ব্যবহার করার আগে, নিম্নলিখিত বিষয়গুলো আপনি ভালোভাবে বুঝেছেন কিনা তা নিশ্চিত করুন:

এপিআই প্রক্সিতে আই/ও টাইমআউট কনফিগার করা

নিম্নলিখিত এপিআই প্রক্সি স্থানগুলিতে I/O টাইমআউট কনফিগার করা যেতে পারে:

  • লক্ষ্য শেষবিন্দু
  • সার্ভিসকলআউট নীতি

এপিআই প্রক্সির টার্গেট এন্ডপয়েন্টে I/O টাইমআউট কনফিগার করা

এই বিভাগে আপনার এপিআই প্রক্সির টার্গেট এন্ডপয়েন্টে কীভাবে I/O টাইমআউট কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে। I/O টাইমআউটটি io.timeout.millis প্রপার্টির মাধ্যমে কনফিগার করা যায়, যা মিলিসেকেন্ডে I/O টাইমআউটের মান নির্দেশ করে।

  1. Edge UI-তে, সেই নির্দিষ্ট API প্রক্সিটি নির্বাচন করুন যেখানে আপনি নতুন I/O টাইমআউট মানটি কনফিগার করতে চান।
  2. যে নির্দিষ্ট টার্গেট এন্ডপয়েন্টটি আপনি পরিবর্তন করতে চান, সেটি নির্বাচন করুন।
  3. TargetEndpoint কনফিগারেশনে <HTTPTargetConnection> এলিমেন্টের অধীনে io.timeout.millis প্রপার্টিটি একটি উপযুক্ত মান দিয়ে যোগ করুন।
  4. উদাহরণস্বরূপ, I/O টাইমআউট ১২০ সেকেন্ডে পরিবর্তন করতে, নিম্নলিখিত কোড ব্লকটি যোগ করুন:

        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>

    যেহেতু io.timeout.millis প্রপার্টিটি মিলিসেকেন্ডে পরিমাপ করা হয়, তাই ১২০ সেকেন্ডের জন্য এর মান হলো 120000

    নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে কিভাবে আপনার এপিআই প্রক্সির টার্গেট এন্ডপয়েন্ট কনফিগারেশনে I/O টাইমআউট সেট করতে হয়:

    ব্যাকএন্ড সার্ভারের জন্য URL ব্যবহার করে টার্গেট এন্ডপয়েন্ট কনফিগারেশনের উদাহরণ

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <URL>https://mocktarget.apigee.net/json</URL>
        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>
      </HTTPTargetConnection>
    </TargetEndpoint>

    টার্গেট সার্ভার ব্যবহার করে টার্গেট এন্ডপয়েন্ট কনফিগারেশনের উদাহরণ

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <LoadBalancer>
          <Server name="target1" />
          <Server name="target2" />
        </LoadBalancer>
        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>
        <Path>/test</Path>
      </HTTPTargetConnection>
    </TargetEndpoint>
  5. আপনার এপিআই প্রক্সিতে করা পরিবর্তনগুলো সংরক্ষণ করুন।

এপিআই প্রক্সির সার্ভিসকলআউট পলিসিতে আই/ও টাইমআউট কনফিগার করা

এই বিভাগে আপনার এপিআই প্রক্সির সার্ভিসকলআউট পলিসিতে কীভাবে আই/ও টাইমআউট কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে। আই/ও টাইমআউট <Timeout> এলিমেন্ট অথবা io.timeout.millis প্রপার্টির মাধ্যমে কনফিগার করা যায়। <Timeout> এলিমেন্ট এবং io.timeout.millis প্রপার্টি উভয়ই আই/ও টাইমআউটের মান মিলিসেকেন্ডে প্রকাশ করে।

আপনি নিম্নলিখিত পদ্ধতিগুলোর যেকোনো একটি ব্যবহার করে ServiceCallout পলিসিতে I/O টাইমআউট কনফিগার করতে পারেন:

  • <Timeout> এলিমেন্ট।
  • io.timeout.millis একটি প্রপার্টি।

টাইমআউট উপাদান

<Timeout> এলিমেন্ট ব্যবহার করে ServiceCallout পলিসিতে I/O টাইমআউট কনফিগার করতে, নিম্নলিখিতগুলি করুন:

  1. Edge UI-তে, সেই নির্দিষ্ট API প্রক্সিটি নির্বাচন করুন যেখানে আপনি ServiceCallout পলিসির জন্য নতুন I/O টাইমআউট মান কনফিগার করতে চান।
  2. যে নির্দিষ্ট সার্ভিসকলআউট পলিসিটি আপনি পরিবর্তন করতে চান, সেটি নির্বাচন করুন।
  3. <ServiceCallout> কনফিগারেশনের অধীনে <Timeout> এলিমেন্টটি একটি উপযুক্ত মান সহ যোগ করুন।

    উদাহরণস্বরূপ, I/O টাইমআউট ১২০ সেকেন্ডে পরিবর্তন করতে, নিম্নলিখিত কোড লাইনটি যোগ করুন:

        <Timeout>120000</Timeout>

    যেহেতু <Timeout> এলিমেন্টটি মিলিসেকেন্ডে থাকে, তাই ১২০ সেকেন্ডের জন্য এর মান হবে 120000

    নিম্নলিখিত উদাহরণে দেখানো হয়েছে কিভাবে <Timeout> এলিমেন্ট ব্যবহার করে ServiceCallout পলিসিতে I/O টাইমআউট কনফিগার করতে হয়:

    ব্যাকএন্ড সার্ভারের জন্য URL ব্যবহার করে ServiceCallout পলিসি কনফিগারেশনের উদাহরণ

    <ServiceCallout name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <Timeout>120000</Timeout>
        <HTTPTargetConnection>
            <Properties/>
            <URL>https://mocktarget.apigee.net/json</URL>
        </HTTPTargetConnection>
    </ServiceCallout>
  4. আপনার এপিআই প্রক্সিতে করা পরিবর্তনগুলো সংরক্ষণ করুন।

io.timeout.millis প্রপার্টি

ServiceCallout পলিসিতে io.timeout.millis প্রপার্টি ব্যবহার করে I/O টাইমআউট কনফিগার করতে, নিম্নলিখিতগুলি করুন:

  1. Edge UI-তে, সেই নির্দিষ্ট API প্রক্সিটি নির্বাচন করুন যেখানে আপনি ServiceCallout পলিসির জন্য নতুন I/O টাইমআউট মান কনফিগার করতে চান।
  2. যে নির্দিষ্ট সার্ভিসকলআউট পলিসিটি আপনি পরিবর্তন করতে চান, সেটি নির্বাচন করুন।
  3. TargetEndpoint কনফিগারেশনে <HTTPTargetConnection> এলিমেন্টের অধীনে io.timeout.millis প্রপার্টিটি একটি উপযুক্ত মান দিয়ে যোগ করুন।

    উদাহরণস্বরূপ, I/O টাইমআউট ১২০ সেকেন্ডে পরিবর্তন করতে, নিম্নলিখিত কোড ব্লকটি যোগ করুন:

        <Properties>
          <Property name="io.timeout.millis">120000</Property>
        </Properties>

    যেহেতু io.timeout.millis প্রপার্টিটি মিলিসেকেন্ডে পরিমাপ করা হয়, তাই ১২০ সেকেন্ডের জন্য এর মান হলো 120000

    নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে কিভাবে আপনার এপিআই প্রক্সির টার্গেট এন্ডপয়েন্ট কনফিগারেশনে I/O টাইমআউট সেট করতে হয়:

    ব্যাকএন্ড সার্ভারের জন্য URL ব্যবহার করে ServiceCallout পলিসি কনফিগারেশনের উদাহরণ

    <ServiceCallout name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <HTTPTargetConnection>
          <Properties>
            <Property name="io.timeout.millis">120000</Property>
          </Properties>
          <URL>https://mocktarget.apigee.net/json</URL>
        </HTTPTargetConnection>
    </ServiceCallout>

    টার্গেট সার্ভার ব্যবহার করে সার্ভিসকলআউট পলিসি কনফিগারেশনের উদাহরণ

    <ServiceCallout enabled="true" name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <Response>calloutResponse</Response>
        <HTTPTargetConnection>
            <LoadBalancer>
                <Server name="target1" />
                <Server name="target2" />
            </LoadBalancer>
            <Properties>
                <Property name="io.timeout.millis">120000</Property>
            </Properties>
            <Path>/test</Path>
        </HTTPTargetConnection>
    </ServiceCallout>
  4. আপনার এপিআই প্রক্সিতে করা পরিবর্তনগুলো সংরক্ষণ করুন।

মেসেজ প্রসেসরগুলিতে I/O টাইমআউট কনফিগার করা

এই বিভাগে মেসেজ প্রসেসরগুলিতে I/O টাইমআউট কীভাবে কনফিগার করতে হয় তা ব্যাখ্যা করা হয়েছে। "How to configure Edge"-এ বর্ণিত সিনট্যাক্স অনুযায়ী টোকেন ব্যবহার করে HTTPTransport.io.timeout.millis প্রপার্টির মাধ্যমে I/O টাইমআউট কনফিগার করা যায়, যা মেসেজ প্রসেসর কম্পোনেন্টের I/O টাইমআউটের মান মিলিসেকেন্ডে প্রকাশ করে।

মেসেজ প্রসেসরগুলিতে I/O টাইমআউট কনফিগার করতে, নিম্নলিখিতগুলি করুন:

  1. মেসেজ প্রসেসর মেশিনে, নিম্নলিখিত ফাইলটি একটি এডিটরে খুলুন। যদি এটি আগে থেকে বিদ্যমান না থাকে, তবে এটি তৈরি করুন।
    /opt/apigee/customer/application/message-processor.properties

    উদাহরণস্বরূপ, vi ব্যবহার করে ফাইলটি খুলতে, নিম্নলিখিত কমান্ডটি লিখুন:

    vi /opt/apigee/customer/application/message-processor.properties
  2. প্রোপার্টিজ ফাইলে নিম্নলিখিত ফরম্যাটে একটি লাইন যোগ করুন, যেখানে TIME_IN_MILLISECONDS এর জায়গায় একটি মান বসাতে হবে:
    conf_http_HTTPTransport.io.timeout.millis=TIME_IN_MILLISECONDS

    উদাহরণস্বরূপ, মেসেজ প্রসেসরের I/O টাইমআউট ১২০ সেকেন্ডে পরিবর্তন করতে, নিম্নলিখিত লাইনটি যোগ করুন:

    conf_http_HTTPTransport.io.timeout.millis=120000
  3. আপনার পরিবর্তনগুলো সংরক্ষণ করুন।
  4. নিশ্চিত করুন যে প্রোপার্টিজ ফাইলটির মালিক নিচে দেখানো অনুযায়ী apigee ব্যবহারকারী।
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. নিচে দেখানো পদ্ধতি অনুযায়ী মেসেজ প্রসেসরটি পুনরায় চালু করুন:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  6. আপনার যদি একাধিক মেসেজ প্রসেসর থাকে, তাহলে সবগুলো মেসেজ প্রসেসরের ক্ষেত্রে উপরের ধাপগুলো পুনরাবৃত্তি করুন।

মেসেজ প্রসেসরগুলিতে I/O টাইমআউট যাচাই করা হচ্ছে

এই অংশে ব্যাখ্যা করা হয়েছে কিভাবে যাচাই করতে হয় যে মেসেজ প্রসেসরগুলিতে I/O টাইমআউট সফলভাবে পরিবর্তন করা হয়েছে।

যদিও আপনি মেসেজ প্রসেসরে I/O টাইমআউট সেট করার জন্য conf_http_HTTPTransport.io.timeout.millis টোকেনটি ব্যবহার করেন, আপনাকে যাচাই করতে হবে যে প্রকৃত HTTPTransport.io.timeout.millis প্রপার্টিটি নতুন মান দিয়ে সেট করা হয়েছে কিনা।

  1. মেসেজ প্রসেসর মেশিনে, /opt/apigee/edge-message-processor/conf ডিরেক্টরিতে HTTPTransport.io.timeout.millis প্রপার্টিটি খুঁজুন এবং নিচে দেখানো নতুন মান দিয়ে এটি সেট করা হয়েছে কিনা তা পরীক্ষা করুন:
    grep -ri "HTTPTransport.io.timeout.millis" /opt/apigee/edge-message-processor/conf
  2. যদি মেসেজ প্রসেসরে নতুন I/O টাইমআউট মান সফলভাবে সেট করা হয়, তাহলে উপরের কমান্ডটি http.properties ফাইলে নতুন মানটি প্রদর্শন করে।
  3. উপরের কমান্ডটি ব্যবহার করে I/O টাইমআউট ১২০ সেকেন্ডে কনফিগার করার পর নমুনা ফলাফলটি নিম্নরূপ:

    /opt/apigee/edge-message-processor/conf/http.properties:HTTPTransport.io.timeout.millis=120000

    উপরের উদাহরণ আউটপুটে লক্ষ্য করুন যে, http.properties ফাইলে HTTPTransport.io.timeout.millis প্রপার্টিটির মান নতুন ভ্যালু 120000 দিয়ে সেট করা হয়েছে। এটি নির্দেশ করে যে, মেসেজ প্রসেসরে I/O টাইমআউট সফলভাবে ১২০ সেকেন্ডে কনফিগার করা হয়েছে।

  4. যদি আপনি এখনও HTTPTransport.io.timeout.millis প্রপার্টির জন্য পুরোনো মান দেখতে পান, তাহলে যাচাই করুন যে আপনি "মেসেজ প্রসেসরে I/O টাইমআউট কনফিগার করা" অংশে বর্ণিত সমস্ত ধাপ সঠিকভাবে অনুসরণ করেছেন কিনা। যদি আপনি কোনো ধাপ বাদ দিয়ে থাকেন, তাহলে সমস্ত ধাপ আবার সঠিকভাবে পুনরাবৃত্তি করুন।
  5. আপনি যদি এখনও I/O টাইমআউট পরিবর্তন করতে না পারেন, তাহলে অনুগ্রহ করে Apigee Edge Support-এর সাথে যোগাযোগ করুন।

এরপর কী?

রাউটারে I/O টাইমআউট কনফিগার করা সম্পর্কে জানুন