如何解决Node.js进程中的ESOCKETTIMEDOUT / ECONNRESET错误
这是一个相当复杂的情况,所以我只是描述一下大局。 我们已经有几个星期了错误,所以任何想法,将不胜感激。
我们有四个networking跳跃:
client (Node.js) | AWS ELB | routing proxy service (Node.js) | Squid proxy | the internet
我们正在观察以下错误:
- 客户
- ESOCKETTIMEDOUT
- 套接字挂断
- 截断的响应(部分JSON,在中间的某个点切断)
- getaddrinfo ENOTFOUND
- 在极端情况下,我们也会看到Postgres和Redis连接出现networking错误
- ELB
- 有时我们观察到浪涌队列填满并丢弃连接。 这似乎已经通过启动更多的路由器盒来解决。
- 路由代理
- ECONNRESET
- 超时
- EMFILE
我们试过了什么?
- 增加Node.js HTTP代理的
maxSockets
值 - 增加最大打开的文件
ulimit
值 - 增加TCP
somaxconn
- 监视连接池大小(通常在正常范围内)
任何想法赞赏。