5 分钟后出现 104 连接重置错误
Getting 104 Connection reset error after 5 minutes
我在 GKE 上有一个集群和我的一个部署 运行 tornado web 应用程序来接收 http 请求。
此部署由 LoadBalancer 公开。
我向 LoadBalancer ip 发送一个简单的 http 请求,它必须在服务器端 运行 约 10 分钟。
恰好 5 分钟后,我得到:
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
我试过了:
- 在我的计算机(客户端和服务器)上使用本地通信并且没有重置。
- 我直接将 kubectl 端口转发到部署(本地客户端 -> kubectl 端口转发 -> 部署 -> 服务器)并且没有重置连接。
所以基本上我很确定它在 loadbalnacer 方面。
- 我用这个配置做了一个后端配置:
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: my-bsc-backendconfig
spec:
timeoutSec: 3600
我的负载均衡器配置如下:
apiVersion: v1
kind: Service
metadata:
annotations:
cloud.google.com/backend-config: '{"ports": {"5000":"my-bsc-backendconfig"}'
creationTimestamp: "2020-12-24T10:08:54Z"
finalizers:
- service.kubernetes.io/load-balancer-cleanup
labels:
name: wesnapp-flask
name: wesnapp-flask-service
namespace: default
resourceVersion: "14652233"
selfLink: /api/v1/namespaces/default/services/wesnapp-flask-service
uid: a922e9cb-4702-481f-b1a9-e09df1653ff7
spec:
clusterIP: 10.64.9.113
externalTrafficPolicy: Cluster
ports:
- nodePort: 31429
port: 5000
protocol: TCP
targetPort: 5000
selector:
name: wesnapp-flask
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer:
ingress:
- ip: x.x.x.x
有什么解决这个问题的想法吗?
谢谢
你的假设是正确的。 GCE LoadBalancer 终止连接。
如 this Google document 中所述,有一个 Stream idle timeout
配置为 300 秒(5 分钟)且无法更改。 HTTP 流在没有 activity.
的情况下 5 分钟后变为空闲
我在 GKE 上有一个集群和我的一个部署 运行 tornado web 应用程序来接收 http 请求。 此部署由 LoadBalancer 公开。 我向 LoadBalancer ip 发送一个简单的 http 请求,它必须在服务器端 运行 约 10 分钟。 恰好 5 分钟后,我得到:
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
我试过了:
- 在我的计算机(客户端和服务器)上使用本地通信并且没有重置。
- 我直接将 kubectl 端口转发到部署(本地客户端 -> kubectl 端口转发 -> 部署 -> 服务器)并且没有重置连接。 所以基本上我很确定它在 loadbalnacer 方面。
- 我用这个配置做了一个后端配置:
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: my-bsc-backendconfig
spec:
timeoutSec: 3600
我的负载均衡器配置如下:
apiVersion: v1
kind: Service
metadata:
annotations:
cloud.google.com/backend-config: '{"ports": {"5000":"my-bsc-backendconfig"}'
creationTimestamp: "2020-12-24T10:08:54Z"
finalizers:
- service.kubernetes.io/load-balancer-cleanup
labels:
name: wesnapp-flask
name: wesnapp-flask-service
namespace: default
resourceVersion: "14652233"
selfLink: /api/v1/namespaces/default/services/wesnapp-flask-service
uid: a922e9cb-4702-481f-b1a9-e09df1653ff7
spec:
clusterIP: 10.64.9.113
externalTrafficPolicy: Cluster
ports:
- nodePort: 31429
port: 5000
protocol: TCP
targetPort: 5000
selector:
name: wesnapp-flask
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer:
ingress:
- ip: x.x.x.x
有什么解决这个问题的想法吗? 谢谢
你的假设是正确的。 GCE LoadBalancer 终止连接。
如 this Google document 中所述,有一个 Stream idle timeout
配置为 300 秒(5 分钟)且无法更改。 HTTP 流在没有 activity.