【问题标题】:Getting 104 Connection reset error after 5 minutes5 分钟后出现 104 连接重置错误
【发布时间】:2020-12-24 12:54:31
【问题描述】:

我在 GKE 上有一个集群,我的一个部署运行 tornado Web 应用程序来接收 http 请求。 此部署由 LoadBalancer 公开。 我向 LoadBalancer ip 发送了一个简单的 http 请求,该请求必须在服务器端运行约 10 分钟。 整整 5 分钟后,我得到:

requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

我试过了:

  • 在我的计算机(客户端和服务器)上使用本地通信,但尚未重置。
  • 我直接将 kubectl 端口转发到了部署(本地客户端 -> kubectl 端口转发 -> 部署 -> 服务器),并且没有重置连接。 所以基本上我很确定它在负载平衡器方面。
  • 我用这个配置做了一个后端配置:
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

任何想法如何解决这个问题? 谢谢

【问题讨论】:

  • 您好,您是否尝试过在不同的环境中重现相同的行为(例如minikube)?超时可能特定于您的客户端 服务器配置(例如超时的服务器设置)。
  • @DawidKruk 是的,我试过了,这种情况与我的服务器客户端无关。

标签: kubernetes google-cloud-platform google-kubernetes-engine google-cloud-networking


【解决方案1】:

你的假设是正确的。 GCE LoadBalancer 终止连接。
正如this Google document 中提到的,有一个Stream idle timeout 配置为300 秒(5 分钟)并且无法更改。 HTTP 流在 5 分钟无活动后变为空闲。

【讨论】:

  • 接下来,我建议你看看Celery 项目,以防你不熟悉它。它可能适合您的项目架构。
猜你喜欢
  • 1970-01-01
  • 2017-06-09
  • 2014-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多