پیکربندی وقفه I/O در روترها

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

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

زمان انتظار ورودی/خروجی (I/O timeout) در روتر، مدت زمانی را نشان می‌دهد که روتر پس از برقراری اتصال و ارسال درخواست به پردازنده پیام، منتظر دریافت پاسخ از آن می‌ماند. مقدار پیش‌فرض زمان انتظار ورودی/خروجی در روتر ۵۷ ثانیه است.

زمان انتظار ورودی/خروجی (I/O timeout) برای روترها را می‌توان از مقدار پیش‌فرض ۵۷ ثانیه بر اساس نیاز شما افزایش یا کاهش داد. این زمان را می‌توان به روش‌های زیر پیکربندی کرد:

  • در یک میزبان مجازی
  • روی روتر

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

نام ملک مکان توضیحات
proxy_read_timeout میزبان مجازی

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

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

به طور پیش‌فرض، این ویژگی مقدار تنظیم شده برای ویژگی conf_load_balancing_load.balancing.driver.proxy.read.timeout در روتر را می‌گیرد. مقدار پیش‌فرض ۵۷ ثانیه است.

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

conf_load_balancing_load.balancing.driver.proxy.read.timeout روتر

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

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

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

مقدار پیش‌فرض این ویژگی ۵۷ ثانیه است.

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

شما می‌توانید با استفاده از نمادگذاری زیر، فاصله زمانی این ویژگی را به چیزی غیر از ثانیه تنظیم کنید:

ms: milliseconds
s:  seconds (default)
m:  minutes
h:  hours
d:  days
w:  weeks
M:  months (length of 30 days)
y:  years (length of 365 days)
conf_load_balancing_load.balancing.driver.nginx.upstream_next_timeout روتر

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

این مورد زمانی قابل اجرا است که نصب Edge شما دارای چندین پردازنده پیام باشد و در صورت بروز خطا، تلاش مجدد فعال باشد. این مقدار یکی از موارد زیر را دارد:

  • مقدار فعلی conf_load_balancing_load.balancing.driver.proxy.read.timeout
  • مقدار پیش‌فرض ۵۷ ثانیه

همانند ویژگی conf_load_balancing_load.balancing.driver.proxy.read.timeout ، می‌توانید فواصل زمانی دیگری غیر از پیش‌فرض (ثانیه) را مشخص کنید.

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

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

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

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

شما می‌توانید میزبان مجازی را با استفاده از یکی از روش‌های زیر پیکربندی کنید:

  • رابط کاربری اج
  • رابط برنامه‌نویسی کاربردی لبه

رابط کاربری اج

برای پیکربندی میزبان مجازی با استفاده از رابط کاربری Edge، موارد زیر را انجام دهید:

  1. به رابط کاربری Edge وارد شوید.
  2. به بخش مدیریت > میزبان‌های مجازی بروید.
  3. یک محیط خاص را که می‌خواهید این تغییر را در آن اعمال کنید، انتخاب کنید.
  4. میزبان مجازی خاصی را که می‌خواهید مقدار جدید زمان‌بندی ورودی/خروجی را برای آن پیکربندی کنید، انتخاب کنید.
  5. در قسمت Properties ، مقدار Proxy Read Timeout را بر حسب ثانیه به‌روزرسانی کنید.

    برای مثال، اگر می‌خواهید زمان انقضا را به ۱۲۰ ثانیه تغییر دهید، مطابق شکل زیر عدد ۱۲۰ را تایپ کنید:

    Proxy read timeout value of 120

  6. تغییر را ذخیره کنید.

رابط برنامه‌نویسی کاربردی لبه

برای پیکربندی میزبان مجازی با استفاده از Edge API، موارد زیر را انجام دهید:

  1. پیکربندی میزبان مجازی فعلی را با استفاده از Get virtual host API مطابق شکل زیر دریافت کنید:

    کاربر ابر عمومی

    curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                    

    کاربر ابر خصوصی

    curl -v -X GET http://<management-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                    

    کجا:

    {organization-name} نام سازمان است.

    {environment-name} نام محیط است

    {virtualhost-name} نام میزبان مجازی است

    نمونه پیکربندی میزبان مجازی

        {
          "hostAliases": [
            "api.myCompany,com"
          ],
          "interfaces": [],
          "listenOptions": [],
          "name": "secure",
          "port": "443",
          "retryOptions": [],
          "sSLInfo": {
            "ciphers": [],
            "clientAuthEnabled": "false",
            "enabled": "true",
            "ignoreValidationErrors": false,
            "keyAlias": "myCompanyKeyAlias",
            "keyStore": "ref://myCompanyKeystoreref",
            "protocols": []
          },
          "useBuiltInFreeTrialCert": false
        }
  2. ویژگی proxy_read_timeout به فایل JSON پیکربندی میزبان مجازی موجود در قسمت properties با مقدار بر حسب ثانیه اضافه کنید.

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

    نمونه پیکربندی میزبان مجازی به‌روزرسانی‌شده

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "proxy_read_timeout",
            "value": "120"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
  3. پیکربندی میزبان مجازی به‌روزرسانی‌شده را در یک فایل ذخیره کنید. برای مثال، virtualhost-payload.json .
  4. پیکربندی virtualhost را با استفاده از API Update a virtual host به صورت زیر به‌روزرسانی کنید:

    کاربر ابر عمومی

    curl -v -X POST Content-Type: application/json
    https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u <username>
                

    کاربر ابر خصوصی

    curl -v -X POST Content-Type: application/json
    http://<management-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u <username>
                

    کجا:

    {organization-name} نام سازمان است.

    {environment-name} نام محیط است

    {virtualhost-name} نام میزبان مجازی است

تأیید زمان انقضای ورودی/خروجی روی میزبان‌های مجازی

این بخش توضیح می‌دهد که چگونه می‌توان با استفاده از Edge API، تأیید کرد که زمان‌بندی I/O با موفقیت در میزبان مجازی تغییر داده شده است.

  1. برای دریافت پیکربندی virtualhost ، دستور Get virtualhost API را مطابق شکل زیر اجرا کنید:

    کاربر ابر عمومی

    curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                  

    کاربر ابر خصوصی

    curl -v -X GET http://<management server-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                  

    کجا:

    {organization-name} نام سازمان است.

    {environment-name} نام محیط است

    {virtualhost-name} نام میزبان مجازی است

  2. تأیید کنید که ویژگی proxy_read_timeout روی مقدار جدید تنظیم شده است.

    نمونه پیکربندی میزبان مجازی به‌روزرسانی‌شده

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "proxy_read_timeout",
            "value": "120"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }

    در مثال بالا، توجه داشته باشید که proxy_read_timeout با مقدار جدید ۱۲۰ ثانیه تنظیم شده است.

  3. اگر هنوز مقدار قدیمی proxy_read_timeout, تأیید کنید که تمام مراحل ذکر شده در پیکربندی I/O timeout در میزبان مجازی را به درستی دنبال کرده‌اید. اگر هر مرحله‌ای را از دست داده‌اید، تمام مراحل را دوباره به درستی تکرار کنید.
  4. اگر هنوز قادر به تغییر زمان‌بندی ورودی/خروجی نیستید، با پشتیبانی Apigee Edge تماس بگیرید.

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

این بخش نحوه پیکربندی زمان انتظار ورودی/خروجی (I/O timeout) در روترها را توضیح می‌دهد. زمان انتظار ورودی/خروجی را می‌توان از طریق ویژگی روتر conf_load_balancing_load.balancing.driver.proxy.read.timeout پیکربندی کرد که مقدار زمان انتظار ورودی/خروجی را بر حسب ثانیه نشان می‌دهد.

برای تنظیم زمان انتظار I/O در روترها، مراحل زیر را انجام دهید:

  1. در دستگاه روتر، فایل زیر را در یک ویرایشگر باز کنید. اگر از قبل وجود ندارد، آن را ایجاد کنید.
    /opt/apigee/customer/application/router.properties

    برای مثال، برای باز کردن فایل با vi ، دستور زیر را وارد کنید:

    vi /opt/apigee/customer/application/router.properties
  2. یک خط با فرمت زیر به فایل properties اضافه کنید و مقداری را به جای time_in_seconds قرار دهید:
  3. conf_load_balancing_load.balancing.driver.proxy.read.timeout=time_in_seconds

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

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=120

    همچنین می‌توانید مدت زمان I/O را بر حسب دقیقه تغییر دهید. برای مثال، برای تغییر مدت زمان به دو دقیقه، خط زیر را اضافه کنید:

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=2m
  4. تغییرات خود را ذخیره کنید.
  5. مطمئن شوید که این فایل ویژگی‌ها متعلق به کاربر apigee است، همانطور که در زیر نشان داده شده است:
    chown apigee:apigee /opt/apigee/customer/application/router.properties
  6. روتر را مطابق شکل زیر مجدداً راه اندازی کنید:
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  7. اگر بیش از یک روتر دارید، مراحل بالا را روی همه روترها تکرار کنید.

بررسی زمان انقضای ورودی/خروجی (I/O) در روترها

این بخش توضیح می‌دهد که چگونه می‌توان تأیید کرد که زمان‌بندی I/O در روترها با موفقیت تغییر داده شده است.

حتی اگر از توکن conf_load_balancing_load.balancing.driver.proxy.read.timeout برای تنظیم زمان انتظار ورودی/خروجی روی روتر استفاده می‌کنید، باید بررسی کنید که آیا ویژگی واقعی proxy_read_timeout با مقدار جدید تنظیم شده است یا خیر.

  1. در دایرکتوری /opt/nginx/conf.d به دنبال ویژگی proxy_read_timeout بگردید و بررسی کنید که آیا مقدار جدید آن به صورت زیر تنظیم شده است یا خیر:
    grep -ri "proxy_read_timeout" /opt/nginx/conf.d
  2. اگر مقدار جدید زمان‌بندی ورودی/خروجی (I/O timeout) با موفقیت روی روتر تنظیم شود، دستور بالا مقدار جدید را در تمام فایل‌های پیکربندی میزبان مجازی نشان می‌دهد.

    در زیر نمونه‌ای از نتیجه‌ی دستور grep بالا، زمانی که زمان I/O برابر با ۱۲۰ ثانیه است، آمده است:

    /opt/nginx/conf.d/0-default.conf:proxy_read_timeout 120;
    /opt/nginx/conf.d/0-edge-health.conf:proxy_read_timeout 1s;

    در خروجی مثال بالا، توجه کنید که ویژگی proxy_read_timeout با مقدار جدید ۱۲۰ در 0-default.conf که فایل پیکربندی میزبان مجازی پیش‌فرض است، تنظیم شده است. این نشان می‌دهد که زمان انتظار ورودی/خروجی (I/O timeout) با موفقیت روی ۱۲۰ ثانیه در روتر پیکربندی شده است.

  3. اگر هنوز مقدار قدیمی ویژگی proxy_read_timeout را مشاهده می‌کنید، تأیید کنید که تمام مراحل ذکر شده در پیکربندی زمان‌بندی ورودی/خروجی روی روترها را به درستی دنبال کرده‌اید. اگر هر مرحله‌ای را از دست داده‌اید، تمام مراحل را دوباره به درستی تکرار کنید.
  4. اگر هنوز قادر به تغییر زمان‌بندی ورودی/خروجی نیستید، با پشتیبانی Apigee Edge تماس بگیرید.

بعدش چی؟

آشنایی با پیکربندی زمان انتظار ورودی/خروجی (I/O Timeout) در پردازشگر پیام (Message Processor)