شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
این سند نحوه پیکربندی زمانبندی ورودی/خروجی (I/O timeout) در روترهای Apigee Edge را توضیح میدهد.
زمان انتظار ورودی/خروجی (I/O timeout) در روتر، مدت زمانی را نشان میدهد که روتر پس از برقراری اتصال و ارسال درخواست به پردازنده پیام، منتظر دریافت پاسخ از آن میماند. مقدار پیشفرض زمان انتظار ورودی/خروجی در روتر ۵۷ ثانیه است.
زمان انتظار ورودی/خروجی (I/O timeout) برای روترها را میتوان از مقدار پیشفرض ۵۷ ثانیه بر اساس نیاز شما افزایش یا کاهش داد. این زمان را میتوان به روشهای زیر پیکربندی کرد:
- در یک میزبان مجازی
- روی روتر
ویژگیهای زیر، زمان انتظار ورودی/خروجی (I/O timeout) را در روترها کنترل میکنند:
| نام ملک | مکان | توضیحات |
|---|---|---|
proxy_read_timeout | میزبان مجازی | حداکثر زمانی را که روتر پس از برقراری اتصال و ارسال درخواست به پردازنده پیام، منتظر دریافت پاسخ از پردازنده پیام میماند، مشخص میکند. اگر در این دوره زمانی هیچ پاسخی از پردازنده پیام دریافت نشود، روتر مهلتش تمام میشود. به طور پیشفرض، این ویژگی مقدار تنظیم شده برای ویژگی اگر این ویژگی با یک مقدار timeout جدید برای یک میزبان مجازی خاص تغییر کند، فقط پروکسیهای API که از آن میزبان مجازی خاص استفاده میکنند، تحت تأثیر قرار میگیرند. |
conf_load_balancing_load.balancing.driver.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 شما دارای چندین پردازنده پیام باشد و در صورت بروز خطا، تلاش مجدد فعال باشد. این مقدار یکی از موارد زیر را دارد:
همانند ویژگی |
قبل از اینکه شروع کنی
قبل از استفاده از مراحل این سند، مطمئن شوید که مباحث زیر را درک کردهاید:
- اگر با ویژگیهای میزبان مجازی آشنا نیستید، مرجع ویژگیهای میزبان مجازی را مطالعه کنید.
- اگر با پیکربندی ویژگیهای Edge در Private Cloud آشنا نیستید، نحوه پیکربندی Edge را مطالعه کنید.
- مطمئن شوید که از بهترین شیوهها برای پیکربندی توصیههای مربوط به زمانبندی I/O پیروی میکنید.
پیکربندی زمان انتظار ورودی/خروجی در میزبان مجازی
این بخش نحوه پیکربندی زمان انتظار ورودی/خروجی (I/O timeout) در میزبان مجازی مرتبط با یک سازمان و محیط را توضیح میدهد. زمان انتظار ورودی/خروجی را میتوان در میزبان مجازی از طریق ویژگی proxy_read_timeout پیکربندی کرد که نشان دهنده مقدار زمان انتظار ورودی/خروجی بر حسب ثانیه است.
شما میتوانید میزبان مجازی را با استفاده از یکی از روشهای زیر پیکربندی کنید:
- رابط کاربری اج
- رابط برنامهنویسی کاربردی لبه
رابط کاربری اج
برای پیکربندی میزبان مجازی با استفاده از رابط کاربری Edge، موارد زیر را انجام دهید:
- به رابط کاربری Edge وارد شوید.
- به بخش مدیریت > میزبانهای مجازی بروید.
- یک محیط خاص را که میخواهید این تغییر را در آن اعمال کنید، انتخاب کنید.
- میزبان مجازی خاصی را که میخواهید مقدار جدید زمانبندی ورودی/خروجی را برای آن پیکربندی کنید، انتخاب کنید.
- در قسمت Properties ، مقدار Proxy Read Timeout را بر حسب ثانیه بهروزرسانی کنید.
برای مثال، اگر میخواهید زمان انقضا را به ۱۲۰ ثانیه تغییر دهید، مطابق شکل زیر عدد ۱۲۰ را تایپ کنید:

- تغییر را ذخیره کنید.
رابط برنامهنویسی کاربردی لبه
برای پیکربندی میزبان مجازی با استفاده از Edge API، موارد زیر را انجام دهید:
- پیکربندی میزبان مجازی فعلی را با استفاده از 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 } - ویژگی
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 } - پیکربندی میزبان مجازی بهروزرسانیشده را در یک فایل ذخیره کنید. برای مثال،
virtualhost-payload.json. - پیکربندی
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 با موفقیت در میزبان مجازی تغییر داده شده است.
- برای دریافت پیکربندی
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} نام میزبان مجازی است
- تأیید کنید که ویژگی
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با مقدار جدید ۱۲۰ ثانیه تنظیم شده است. - اگر هنوز مقدار قدیمی
proxy_read_timeout,تأیید کنید که تمام مراحل ذکر شده در پیکربندی I/O timeout در میزبان مجازی را به درستی دنبال کردهاید. اگر هر مرحلهای را از دست دادهاید، تمام مراحل را دوباره به درستی تکرار کنید. - اگر هنوز قادر به تغییر زمانبندی ورودی/خروجی نیستید، با پشتیبانی Apigee Edge تماس بگیرید.
پیکربندی زمان انتظار ورودی/خروجی (I/O timeout) در روترها
این بخش نحوه پیکربندی زمان انتظار ورودی/خروجی (I/O timeout) در روترها را توضیح میدهد. زمان انتظار ورودی/خروجی را میتوان از طریق ویژگی روتر conf_load_balancing_load.balancing.driver.proxy.read.timeout پیکربندی کرد که مقدار زمان انتظار ورودی/خروجی را بر حسب ثانیه نشان میدهد.
برای تنظیم زمان انتظار I/O در روترها، مراحل زیر را انجام دهید:
- در دستگاه روتر، فایل زیر را در یک ویرایشگر باز کنید. اگر از قبل وجود ندارد، آن را ایجاد کنید.
/opt/apigee/customer/application/router.properties
برای مثال، برای باز کردن فایل با
vi، دستور زیر را وارد کنید:vi /opt/apigee/customer/application/router.properties
- یک خط با فرمت زیر به فایل
propertiesاضافه کنید و مقداری را به جایtime_in_secondsقرار دهید: - تغییرات خود را ذخیره کنید.
- مطمئن شوید که این فایل ویژگیها متعلق به کاربر
apigeeاست، همانطور که در زیر نشان داده شده است:chown apigee:apigee /opt/apigee/customer/application/router.properties
- روتر را مطابق شکل زیر مجدداً راه اندازی کنید:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- اگر بیش از یک روتر دارید، مراحل بالا را روی همه روترها تکرار کنید.
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
بررسی زمان انقضای ورودی/خروجی (I/O) در روترها
این بخش توضیح میدهد که چگونه میتوان تأیید کرد که زمانبندی I/O در روترها با موفقیت تغییر داده شده است.
حتی اگر از توکن conf_load_balancing_load.balancing.driver.proxy.read.timeout برای تنظیم زمان انتظار ورودی/خروجی روی روتر استفاده میکنید، باید بررسی کنید که آیا ویژگی واقعی proxy_read_timeout با مقدار جدید تنظیم شده است یا خیر.
- در دایرکتوری
/opt/nginx/conf.dبه دنبال ویژگیproxy_read_timeoutبگردید و بررسی کنید که آیا مقدار جدید آن به صورت زیر تنظیم شده است یا خیر:grep -ri "proxy_read_timeout" /opt/nginx/conf.d
- اگر مقدار جدید زمانبندی ورودی/خروجی (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) با موفقیت روی ۱۲۰ ثانیه در روتر پیکربندی شده است. - اگر هنوز مقدار قدیمی ویژگی
proxy_read_timeoutرا مشاهده میکنید، تأیید کنید که تمام مراحل ذکر شده در پیکربندی زمانبندی ورودی/خروجی روی روترها را به درستی دنبال کردهاید. اگر هر مرحلهای را از دست دادهاید، تمام مراحل را دوباره به درستی تکرار کنید. - اگر هنوز قادر به تغییر زمانبندی ورودی/خروجی نیستید، با پشتیبانی Apigee Edge تماس بگیرید.
بعدش چی؟
آشنایی با پیکربندی زمان انتظار ورودی/خروجی (I/O Timeout) در پردازشگر پیام (Message Processor)