gpt4 book ai didi

nginx - 如何在 Kong v1.1.2 中设置超时

转载 作者:行者123 更新时间:2023-12-05 09:12:04 32 4
gpt4 key购买 nike

问题

我在 Kong 错误日志中收到一条错误消息,报告上游服务器已超时。但我知道上游进程只占用了一分钟,当它完成时(在 Kong 记录错误之后)它记录了一个 java 错误“Broken Pipe”,暗示 Kong 不再监听响应。

这是当上游进程花费超过 60 秒时的行为。在某些情况下,只需不到 60 秒,一切正常。

如何延长 Kong 的超时时间?

详情

港版

1.1.2

Kong 的错误消息(略有编辑):

2019/12/06 09:57:10 [error] 1421#0: *1377 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xyz.xyz.xyz.xyz, server: kong, request: "POST /api/...... HTTP/1.1", upstream: "http://127.0.0.1:8010/api/.....", host: "xyz.xyz.com"

这是来自上游服务器日志的错误(通过 SpringBoot 的 Java/Tomcat)

Dec 06 09:57:23 gateway-gw001-99 java[319]: org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
Dec 06 09:57:23 gateway-gw001-99 java[319]: at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:364) ~[tomcat-embed-core-8.5.42.jar!/
Dec 06 09:57:23 gateway-gw001-99 java[319]: at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:833) ~[tomcat-embed-core-8.5.42.jar!
...

我的 kong.conf(略有编辑)

trusted_ips = 0.0.0.0/0
admin_listen = 0.0.0.0:8001
proxy_listen = 0.0.0.0:8080 proxy_protocol, 0.0.0.0:8443 ssl proxy_protocol
database = postgres
pg_host = 127.0.0.1
pg_port = 5432
pg_user = kong
pg_password = xyzxyzxyzxyzxyz
pg_database = kong
plugins = bundled,session
real_ip_header = proxy_protocol

多一点上下文

  • Kong 和上游服务器托管在同一个 Ubuntu VM 上
  • Ubuntu VM 作为 Linux 容器 (LXC) 在另一个 Ubuntu VM 中托管
  • 外部 VM 使用 NGinX 接收公共(public)流量并将其反向代理到 Kong。它使用流来做到这一点。这让 Kong 成为我的 SSL 分界点。

外部 NGinX 流配置:

stream {

server {
listen 80;
proxy_pass xyz.xyz.xyz.xyz:8080;
proxy_protocol on;
}

server {
listen 443;
proxy_pass xyz.xyz.xyz.xyz:8443;
proxy_protocol on;
}
}

我尝试过的

我尝试将以下行添加到 kong.conf。在 Kong 的 1.1.2 版本中,您基本上可以通过向 NginX 配置添加前缀并将它们放在 kong.conf ( https://docs.konghq.com/1.1.x/configuration/#injecting-individual-nginx-directives) 中来远程更改 NGinX 设置。他们似乎都没有做任何事情:

nginx_http_keepalive_timeout=300s
nginx_proxy_proxy_read_timeout=300s
nginx_http_proxy_read_timeout=300s
nginx_proxy_send_timeout=300s
nginx_http_send_timeout=300s

最佳答案

根据 documentation Kong 0.10 版具有三个属性,您可以设置这些属性来管理 proxy 连接

  1. upstream_connect_timeout:以毫秒为单位定义超时建立与上游服务的连接。
  2. upstream_send_timeout:以毫秒为单位定义用于传输请求的两个连续写入操作之间的超时到您的上游服务。
  3. upstream_read_timeout:以毫秒为单位定义两次连续读取之间的超时从上游服务接收请求的操作。

在这种情况下,由于 Kong 等待来自上游的响应超时,您需要为 upstream_read_timeout 添加属性设置

Kong 版本 1.1 documentation服务对象现在包含这些名称略有不同的超时属性:

  1. connect_timeout:与上游服务器建立连接的超时时间(以毫秒为单位)。默认为 60000。
  2. write_timeout:两次连续写入操作之间的超时时间(以毫秒为单位),用于将请求传输到上游服务器。默认为 60000。
  3. read_timeout:两次连续读取操作之间的超时时间(以毫秒为单位),用于将请求传输到上游服务器。默认为 60000。

关于nginx - 如何在 Kong v1.1.2 中设置超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59216591/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com