jom*_*omo 19 sockets tcp http docker dokku
我们有一个node.js Web服务器,它向外部API发出一些传出的http请求.它使用dokku在docker中运行.
经过一段时间的加载(30req/s)后,这些传出请求不再得到响应.
这是我用常量req/s测试时的图表:
incoming
并且outgoing
是并发请求的数量(不是初始化请求的数量).(在图表中很难看到,但每次约10次请求时它相当稳定.)
response time
仅适用于外部请求.你可以清楚地看到他们突然失败了(达到1000毫秒超时).
我们发送的req/s越多,我们遇到这个问题的速度就越快,所以我们必须有一些限制,我们越来越接近每个请求.
我netstat -ant | tail -n +3 | wc -l
在主机上用来获取开放连接的数量,但它只有~450(大多数TIME_WAIT
).这不应该达到套接字限制.我们也没有达到任何RAM或CPU限制.
我也尝试在docker之外的同一台机器上运行相同的应用程序,它只发生在docker中.
这可能是由于 Docker 用户态代理造成的。如果您正在运行最新版本的 Docker,请尝试使用该选项运行守护--userland-proxy=false
程序。这将使 Docker 仅使用 iptables 处理端口转发,并且开销更少。
归档时间: |
|
查看次数: |
1673 次 |
最近记录: |