您正在查看 Apigee Edge 文档。
前往 Apigee X 文档。 信息
本文档介绍了如何在 Apigee Edge 的路由器上配置 I/O 超时。
路由器上的 I/O 超时是指路由器在建立连接并将请求发送到消息处理器后,等待接收消息处理器响应的时间。路由器上的 I/O 超时默认值为 57 秒。
您可以根据需要,将路由器的 I/O 超时时间从默认值 57 秒增加或减少。可以通过以下方式进行配置:
- 在虚拟主机中
- 在路由器上
以下属性用于控制路由器的 I/O 超时:
| 属性名称 | 位置 | 说明 |
|---|---|---|
proxy_read_timeout
|
虚拟主机 |
指定在建立连接并将请求发送到消息处理器后,路由器等待接收来自消息处理器的响应的最长时间。 如果消息处理器在此超时期限内未做出响应,则路由器会超时。 默认情况下,此属性采用在路由器上为 如果使用特定虚拟主机的新超时值修改此属性,则只有使用该特定虚拟主机的 API 代理会受到影响。 |
conf_load_balancing_load.balancing.driver.proxy.read.timeout
|
路由器 |
指定在建立连接并将请求发送到消息处理器后,路由器等待接收来自消息处理器的响应的最长时间。 如果消息处理器在此超时期限内未做出响应,则路由器会超时。 此属性用于相应路由器上的所有虚拟主机。 此属性的默认值为 57 秒。 您可以按照下文在路由器上配置 I/O 超时中的说明修改此属性,也可以通过在虚拟主机级别设置 您可以使用以下表示法将此属性的时间间隔设置为秒以外的其他值: 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 超时
本部分介绍了如何配置与组织和环境关联的虚拟主机中的 I/O 超时。您可以通过属性 proxy_read_timeout 在虚拟主机中配置 I/O 超时,该属性表示以秒为单位的 I/O 超时值。
您可以使用以下方法之一配置虚拟主机:
- Edge 界面
- Edge API
Edge 界面
如需使用 Edge 界面配置虚拟主机,请执行以下操作:
- 登录 Edge 界面。
- 依次前往管理 > 虚拟主机。
- 选择要进行此更改的特定环境。
- 选择要为其配置新 I/O 超时值的特定虚拟主机。
- 在属性下,更新代理读取超时值(以秒为单位)。
例如,如果您想将超时时间更改为 120 秒,请键入 120,如下图所示:
- 保存更改。
Edge API
如需使用 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>Private Cloud 用户
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 } - 在现有虚拟主机配置 JSON 载荷的
properties下添加属性proxy_read_timeout,并以秒为单位设置相应的值。例如,如需将 I/O 超时时间更改为 120 秒,请添加
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。 - 使用
更新虚拟主机 API,按如下方式更新
virtualhost配置:公有云用户
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>
Private Cloud 用户
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} 是虚拟主机的名称
验证虚拟主机上的 I/O 超时
本部分介绍了如何使用 Edge API 验证虚拟主机上的 I/O 超时是否已成功修改。
- 执行
Get virtual host API 以获取
virtualhost配置,如下所示:公有云用户
curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>Private Cloud 用户
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已设置为新值 120 秒。 - 如果您仍然看到
proxy_read_timeout,的旧值,请验证您是否已正确按照在虚拟主机中配置 I/O 超时中所述的所有步骤操作。 如果您遗漏了任何步骤,请再次正确重复所有步骤。 - 如果您仍然无法修改 I/O 超时,请与 Apigee Edge 支持团队联系。
在路由器上配置 I/O 超时
本部分介绍了如何在路由器上配置 I/O 超时。可以通过路由器属性 conf_load_balancing_load.balancing.driver.proxy.read.timeout 配置 I/O 超时,该属性表示以秒为单位的 I/O 超时值。
如需在路由器上配置 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
例如,如需将路由器的 I/O 超时时间更改为 120 秒,请添加以下行:
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 在路由器上设置了 I/O 超时,您也需要验证实际属性 proxy_read_timeout 是否已设置为新值。
- 在
/opt/nginx/conf.d目录中搜索属性proxy_read_timeout,并检查该属性是否已设置为新值,如下所示:grep -ri "proxy_read_timeout" /opt/nginx/conf.d
- 如果成功在路由器上设置了新的 I/O 超时值,则上述命令会在所有虚拟主机配置文件中显示新值。
以下是当 I/O 超时为 120 秒时,上述
grep命令的示例结果:/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中设置为新值 120,而 是默认虚拟主机的配置文件。这表示已成功将路由器上的 I/O 超时时间配置为 120 秒。 - 如果您仍然看到属性
proxy_read_timeout的旧值,请验证您是否已正确按照在路由器上配置 I/O 超时中所述的所有步骤操作。如果您错过了任何步骤,请再次正确重复所有步骤。 - 如果您仍然无法修改 I/O 超时,请与 Apigee Edge 支持团队联系。
后续步骤
了解如何在消息处理器中配置 I/O 超时