Kubernetes 丢弃由 node.js / postgres 初始化的 HTTP 连接

Shm*_*Tal 5 postgresql node.js kubernetes

我有一段用 node.js 编写的非常简单的代码,它在 Kubernetes 和 AWS 上运行。该应用程序仅执行 POST/GET 请求以从其他服务创建和获取数据。服务1-->服务2->服务3

service1获取post请求并调用service2,service2调用postgres DB(使用sequlize)并创建一个新行然后调用service3,service3从数据库中获取数据并将响应返回给service2,service2将响应返回给service1。

大多数情况下它都有效,但有一次在 4-5 次尝试 + 并发中,它下降了,我超时了。问题是 service1 收到了响应(根据日志和网络跟踪),但似乎连接在服务之间的某个地方断开了,我得到了超时 ( ESOCKETTIMEDOUT)。

  • 我试图用 node-fetch 替换 request.js
  • 我尝试使用 NewRelic/Elastic APM
  • 我尝试使用 node -prof 并使用 node 对其进行分析,但--prof-process没有得出结论。

Kubernetes 是否有可能断开我的连接?

Ric*_*ico 0

如果不进行调试,很难说清楚,但由于当您添加更多负载 + 并发性时,某些连接会被丢弃,因此您的Kubernetes 部署上可能需要更多副本,并且可能需要调整容器 Pod 规格上的资源。

如果情况确实如此,您还可以配置HPA(水平 Pod 自动缩放器)来处理您的负载。