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

时间:2018-10-08 06:40:51

标签: node.js postgresql kubernetes

我有一个非常简单的用node.js编写的代码,可以在Kubernetes和AWS上运行。该应用程序仅执行POST / GET请求即可创建其他服务并从中获取数据。 service1-> service2-> service3

Service1获取发布请求并调用service2,service2调用postgres DB(使用sequlize)并创建一个新行,然后调用service3,service3从DB获取数据并将响应返回给service2,service2将响应返回给service1。 / p>

在大多数情况下它都能正常工作,但是在4-5次尝试+并发中,它一次掉了,我超时了。问题是service1收到了响应(根据日志和网络跟踪记录),但是似乎服务之间的连接已断开,并且出现超时(ESOCKETTIMEDOUT)。

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

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

1 个答案:

答案 0 :(得分:0)

很难进行调试,但是由于添加更多负载和并发性时某些连接已断开,因此您的Kubernetes deployments上可能需要更多副本,并且可能会调整容器pod规格上的Resources

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