پیکربندی وقفه ورودی/خروجی در پردازشگرهای پیام

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

این سند نحوه پیکربندی زمان‌بندی ورودی/خروجی (I/O timeout) برای پردازنده‌های پیام‌رسان لبه‌ای Apigee را توضیح می‌دهد.

زمان انتظار ورودی/خروجی (I/O) در پردازنده پیام (Message Processor) نشان دهنده زمانی است که پردازنده پیام منتظر می‌ماند تا پاسخی از سرور بک‌اند دریافت کند یا سوکت آماده نوشتن درخواست به سرور بک‌اند شود، قبل از اینکه زمان آن به پایان برسد.

مقدار پیش‌فرض زمان انتظار ورودی/خروجی پردازنده پیام، 55 seconds است. این دوره زمانی برای سرورهای backend پیکربندی‌شده در پیکربندی نقطه پایانی هدف و در سیاست ServiceCallout پروکسی API شما اعمال می‌شود.

زمان انتظار ورودی/خروجی برای پردازنده‌های پیام (Message Processors) را می‌توان از مقدار پیش‌فرض 55 seconds ، بسته به نیاز شما، افزایش یا کاهش داد. این زمان را می‌توان در مکان‌های زیر پیکربندی کرد:

  • در پروکسی API
    • نقطه پایانی هدف
    • سیاست فراخوانی سرویس
  • در پردازشگر پیام

ویژگی‌های زیر، زمان انتظار ورودی/خروجی (I/O timeout) را در پردازنده‌های پیام (Message Processors) کنترل می‌کنند:

نام ملک مکان توضیحات
io.timeout.millis

پروکسی API:

  • نقطه پایانی هدف
  • سیاست فراخوان خدمات

این حداکثر زمانی است که پردازشگر پیام موارد زیر را انجام می‌دهد:

  • پس از برقراری اتصال و ارسال درخواست به سرور backend، منتظر دریافت پاسخ از سرور backend می‌ماند یا
  • منتظر می‌ماند تا سوکت آماده شود تا پردازنده پیام، درخواست را به سرور backend ارسال کند.

اگر در این دوره زمانی هیچ پاسخی از سرور backend دریافت نشود، پردازنده پیام مهلتش تمام می‌شود.

به طور پیش‌فرض، این ویژگی مقدار تعیین‌شده برای ویژگی HTTPTransport.io.timeout.millis در پردازنده پیام را می‌گیرد. مقدار پیش‌فرض 55 seconds است.

اگر این ویژگی با یک مقدار timeout جدید برای یک پروکسی API خاص تغییر یابد، فقط آن پروکسی API تحت تأثیر قرار می‌گیرد.

HTTPTransport.io.timeout.millis پردازشگر پیام

این حداکثر زمانی است که پردازشگر پیام موارد زیر را انجام می‌دهد:

  • پس از برقراری اتصال و ارسال درخواست به سرور backend، منتظر دریافت پاسخ از سرور backend می‌ماند یا
  • منتظر می‌ماند تا سوکت آماده شود تا پردازنده پیام، درخواست را به سرور backend ارسال کند.

اگر در این دوره زمانی هیچ پاسخی از سرور backend دریافت نشود، پردازنده پیام مهلتش تمام می‌شود.

این ویژگی برای همه پروکسی‌های API که روی این پردازشگر پیام اجرا می‌شوند، استفاده می‌شود.

مقدار پیش‌فرض این ویژگی 55 seconds است.

شما می‌توانید این ویژگی را همانطور که در پیکربندی زمان انتظار ورودی/خروجی در پردازنده‌های پیام توضیح داده شده است، تغییر دهید، یا می‌توانید با تنظیم ویژگی io.timeout.millis در سطح پروکسی API، این مقدار را بازنویسی کنید.

قبل از اینکه شروع کنی

قبل از استفاده از مراحل این سند، مطمئن شوید که مباحث زیر را درک کرده‌اید:

پیکربندی زمان انتظار ورودی/خروجی در پروکسی API

زمان‌بندی ورودی/خروجی (I/O timeout) را می‌توان در مکان‌های پروکسی API زیر پیکربندی کرد:

  • نقطه پایانی هدف
  • سیاست فراخوانی سرویس

پیکربندی زمان انتظار ورودی/خروجی در نقطه پایانی هدف پروکسی API

این بخش نحوه پیکربندی زمان انتظار ورودی/خروجی (I/O timeout) را در نقطه پایانی هدف پروکسی API شما توضیح می‌دهد. زمان انتظار ورودی/خروجی را می‌توان از طریق ویژگی io.timeout.millis پیکربندی کرد که مقدار زمان انتظار ورودی/خروجی را بر حسب میلی‌ثانیه نشان می‌دهد.

  1. در رابط کاربری Edge، پروکسی API خاصی را که می‌خواهید مقدار جدید زمان‌بندی ورودی/خروجی را در آن پیکربندی کنید، انتخاب کنید.
  2. نقطه پایانی هدف خاصی را که می‌خواهید تغییر دهید، انتخاب کنید.
  3. ویژگی io.timeout.millis با مقدار مناسب در زیر عنصر <HTTPTargetConnection> در پیکربندی TargetEndpoint اضافه کنید.
  4. برای مثال، برای تغییر زمان انتظار ورودی/خروجی به ۱۲۰ ثانیه، بلوک کد زیر را اضافه کنید:

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

    از آنجایی که ویژگی io.timeout.millis بر حسب میلی‌ثانیه است، مقدار ۱۲۰ ثانیه برابر 120000 است.

    مثال‌های زیر نحوه پیکربندی زمان‌بندی ورودی/خروجی (I/O timeout) را در پیکربندی نقطه پایانی هدف پروکسی API شما نشان می‌دهند:

    مثال پیکربندی نقطه پایانی هدف با استفاده از URL برای سرور backend

    <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. تغییرات ایجاد شده در پروکسی API خود را ذخیره کنید.

پیکربندی زمان انتظار ورودی/خروجی (I/O timeout) در سیاست ServiceCallout مربوط به پروکسی API

این بخش نحوه پیکربندی زمان انتظار ورودی/خروجی (I/O timeout) را در سیاست ServiceCallout پروکسی API شما توضیح می‌دهد. زمان انتظار ورودی/خروجی را می‌توان از طریق عنصر <Timeout> یا ویژگی io.timeout.millis پیکربندی کرد. هم عنصر <Timeout> و هم ویژگی io.timeout.millis مقادیر زمان انتظار ورودی/خروجی را بر حسب میلی‌ثانیه نشان می‌دهند.

شما می‌توانید با استفاده از یکی از روش‌های زیر، زمان انتظار ورودی/خروجی (I/O timeout) را در سیاست ServiceCallout پیکربندی کنید:

  • عنصر <Timeout> .
  • ویژگی io.timeout.millis .

عنصر زمان‌بندی

برای پیکربندی زمان‌بندی I/O در سیاست ServiceCallout با استفاده از عنصر <Timeout> ، موارد زیر را انجام دهید:

  1. در رابط کاربری Edge، پروکسی API خاصی را که می‌خواهید مقدار جدید زمان‌بندی ورودی/خروجی را برای سیاست ServiceCallout پیکربندی کنید، انتخاب کنید.
  2. سیاست ServiceCallout خاصی را که می‌خواهید تغییر دهید، انتخاب کنید.
  3. عنصر <Timeout> را با مقدار مناسب در پیکربندی <ServiceCallout> اضافه کنید.

    برای مثال، برای تغییر زمان انتظار ورودی/خروجی به ۱۲۰ ثانیه، خط کد زیر را اضافه کنید:

        <Timeout>120000</Timeout>

    از آنجایی که عنصر <Timeout> بر حسب میلی‌ثانیه است، مقدار ۱۲۰ ثانیه برابر 120000 است.

    مثال زیر نحوه پیکربندی زمان‌بندی I/O در سیاست ServiceCallout را با استفاده از عنصر <Timeout> نشان می‌دهد:

    مثال پیکربندی سیاست ServiceCallout با استفاده از URL برای سرور backend

    <ServiceCallout name="Service-Callout-1">
        <DisplayName>ServiceCallout-1</DisplayName>
        <Timeout>120000</Timeout>
        <HTTPTargetConnection>
            <Properties/>
            <URL>https://mocktarget.apigee.net/json</URL>
        </HTTPTargetConnection>
    </ServiceCallout>
  4. تغییرات ایجاد شده در پروکسی API خود را ذخیره کنید.

ویژگی io.timeout.millis

برای پیکربندی زمان‌بندی I/O در سیاست ServiceCallout با استفاده از ویژگی io.timeout.millis ، موارد زیر را انجام دهید:

  1. در رابط کاربری Edge، پروکسی API خاصی را که می‌خواهید مقدار جدید زمان‌بندی ورودی/خروجی را برای سیاست ServiceCallout پیکربندی کنید، انتخاب کنید.
  2. سیاست ServiceCallout خاصی را که می‌خواهید تغییر دهید، انتخاب کنید.
  3. ویژگی io.timeout.millis با مقدار مناسب در زیر عنصر <HTTPTargetConnection> در پیکربندی TargetEndpoint اضافه کنید.

    برای مثال، برای تغییر زمان انتظار ورودی/خروجی به ۱۲۰ ثانیه، بلوک کد زیر را اضافه کنید:

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

    از آنجایی که ویژگی io.timeout.millis بر حسب میلی‌ثانیه است، مقدار ۱۲۰ ثانیه برابر 120000 است.

    مثال‌های زیر نحوه پیکربندی زمان‌بندی ورودی/خروجی (I/O timeout) را در پیکربندی نقطه پایانی هدف پروکسی API شما نشان می‌دهند:

    مثال پیکربندی سیاست ServiceCallout با استفاده از URL برای سرور backend

    <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 با استفاده از سرور هدف

    <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. تغییرات ایجاد شده در پروکسی API خود را ذخیره کنید.

پیکربندی زمان انتظار ورودی/خروجی در پردازنده‌های پیام

این بخش نحوه پیکربندی زمان انتظار ورودی/خروجی (I/O timeout) در پردازنده‌های پیام (Message Processors) را توضیح می‌دهد. زمان انتظار ورودی/خروجی را می‌توان از طریق ویژگی HTTPTransport.io.timeout.millis پیکربندی کرد، که نشان دهنده مقدار زمان انتظار ورودی/خروجی بر حسب میلی ثانیه در کامپوننت پردازنده پیام است و از توکن مطابق با سینتکس شرح داده شده در نحوه پیکربندی Edge استفاده می‌کند.

برای پیکربندی زمان‌بندی ورودی/خروجی (I/O timeout) در پردازنده‌های پیام (Message Processors)، موارد زیر را انجام دهید:

  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

    برای مثال، برای تغییر زمان انتظار ورودی/خروجی در پردازنده پیام به ۱۲۰ ثانیه، خط زیر را اضافه کنید:

    conf_http_HTTPTransport.io.timeout.millis=120000
  3. تغییرات خود را ذخیره کنید.
  4. مطمئن شوید که فایل properties متعلق به کاربر 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 timeout) با موفقیت در پردازنده‌های پیام (Message Processors) تغییر داده شده است.

حتی اگر از توکن 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. اگر مقدار جدید زمان‌بندی ورودی/خروجی با موفقیت در پردازنده پیام تنظیم شود، دستور بالا مقدار جدید را در فایل http.properties نشان می‌دهد.
  3. نتیجه نمونه از دستور بالا پس از تنظیم زمان انتظار ورودی/خروجی روی ۱۲۰ ثانیه به شرح زیر است:

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

    در خروجی مثال بالا، توجه کنید که ویژگی HTTPTransport.io.timeout.millis با مقدار جدید 120000 در http.properties تنظیم شده است. این نشان می‌دهد که زمان انتظار ورودی/خروجی با موفقیت روی ۱۲۰ ثانیه در پردازنده پیام پیکربندی شده است.

  4. اگر هنوز مقدار قدیمی ویژگی HTTPTransport.io.timeout.millis را مشاهده می‌کنید، تأیید کنید که تمام مراحل ذکر شده در پیکربندی زمان‌بندی ورودی/خروجی در پردازنده‌های پیام را به درستی دنبال کرده‌اید. اگر هر مرحله‌ای را از دست داده‌اید، تمام مراحل را دوباره به درستی تکرار کنید.
  5. اگر هنوز قادر به تغییر زمان‌بندی ورودی/خروجی نیستید، لطفاً با پشتیبانی Apigee Edge تماس بگیرید.

بعدش چی؟

آشنایی با پیکربندی I/O timeout در روترها