截至昨天,我对 Docker 完全陌生。我有这个我正在运行的 node.js 服务器,它只是创建一个 TCP 服务器,然后处理来自客户端的消息。有一个由我一直在运行的其他人编写的测试工具,它允许您想要的任意数量的并发连接。
当我在本地运行它时,我可以有 100 多个并发连接没问题。但是,当我开始进行 200 多个并发连接时,有时我确实会在本地看到一个问题,它实际上遇到了问题socket.on(error)
并给了我一个错误。如果我直接启动服务器并尝试 200 个并发连接,它通常会成功完成,但后续尝试会出错。
但是,当我使用在 Docker 中运行的服务器运行线束时,一旦我尝试使用 33 个并发连接运行它,它就不起作用。我从测试工具中收到“对等连接重置”错误。如果我尝试 32 个连接,它工作正常。当我尝试 33+ 时,我也没有在服务器上看到任何错误,就像我在本地运行时一样。如果我在 33+ 失败后再次尝试进行 32 个并发连接,它将成功。
有谁知道为什么会发生这种情况?我必须更改 Docker 中的某种设置以允许超过 32 个并发连接吗?我发现它是 32 的硬限制并且总是与 32 一起工作而从不与 33 一起工作,这很有趣。
FWIW,在我的 node.js 服务器中,我让它监听port 8080
和host 0.0.0.0
. 最初我有它,127.0.0.1
但虽然它在本地工作,但它在 Docker 中不起作用。要运行它,我使用的是 command docker run -p 8080:8080 app
。
我在运行最新 OSX 的 MacBook Pro 上运行 Docker。
有任何想法吗?