问题
以下是来自上游服务器日志的错误信息(Java/Tomcat通过SpringBoot):
我在Kong错误日志中收到一个错误消息,报告上游服务器已超时。但我知道上游进程刚刚花了一分钟左右的时间,并且当它完成后(在Kong记录错误之后),它会记录一个java错误“Broken Pipe”,这意味着Kong不再侦听响应。
当上游进程超过60秒时,就会出现这种行为。在某些情况下,它需要少于60秒,一切正常。
如何延长Kong的超时时间?
细节
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"
以下是来自上游服务器日志的错误信息(Java/Tomcat通过SpringBoot):
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接收公共流量并将其反向代理到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中来远程更改NGinX设置(https://docs.konghq.com/1.1.x/configuration/#injecting-individual-nginx-directives)。但是,这些行似乎没有任何作用:
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
upstream_read_timeout
?https://docs.konghq.com/0.10.x/proxy/#3-proxying--upstream-timeouts - undefined