node.js - 使用 Node 的 http.get 函数获取 ECONNRESET 响应

标签 node.js express

我终于弄清楚是什么导致了这个问题,但在网上没有找到任何直接的答案,所以我想我应该发布一个答案(如下)。不管怎样,问题是这样的:

我有一个简单的 Node 应用程序在端口 3000 上运行。我正在尝试一些数据库连接池,我想对其进行负载测试以确保它按我预期的方式工作。我安装了 siege 并尝试过:

$ siege -c 10 -r 10 -b http://localhost:3000

我收到连接被对等方重置错误。所以我尝试减少连接数:

$ siege -c 1 -r 1 -b http://localhost:3000

同样的问题。我想可能是 siege 的问题,所以我尝试了 nperf 并得到了 ECONNRESET 错误。与火炮相同。

奇怪的是我可以使用curl、telnet 和网络浏览器进行连接并得到有效的响应。

我尝试在 Express 应用程序中记录错误,但它似乎从未收到请求。我尝试使用 nettop 监控网络流量,但它从未显示使用 siege 或 nperf 的连接(尽管它使用了 curl)。

我编写了一个客户端应用程序,使用 nperf 使用的相同方法( Node 的 http.get 函数)进行连接,并获得了相同的 ECONNRESET 响应。

我编写了一个在端口 3001 上运行的简单 Express 应用程序,它运行良好!我尝试注释掉我的端口 3000 应用程序中的大部分行,因此它与我的 3001 应用程序基本相同,但它仍然不起作用。我开始怀疑 webpack 正在做一些奇怪的事情,然后终于开始意识到......请参阅下面的答案。

最佳答案

也许端口 3000 上还有另一个程序!

所以,我跑了:

$ sudo lsof -i -P | grep -i“听”

我发现了一个我忘记停止的旧虚拟机,它的端口 3000 暴露了(另一个项目)。我把它关掉了,一切都很好!

我以为 Node 会在端口被使用时发出警告,但由于某种原因它没有注意到这个。

无论如何,如果您遇到类似的错误,请执行端口扫描!

关于node.js - 使用 Node 的 http.get 函数获取 ECONNRESET 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39007444/

相关文章:

javascript - 通过nodejs从mongodb获取数据并express到html页面

javascript - 如何在 chrome 中获取 JS 错误以显示正确的行号?

javascript - jquery $.ajax 给出 404 未找到。我将 Node.js 与 Express 一起使用

javascript - Express/nodejs 中的参数化路由 url 之后添加静态文件

javascript - NodeJs,500 无法获取访问 token (错误 : connect ECONNREFUSED) at at process. _tickCallback (node.js:419:13)

javascript - 如何更改 Mongoose 模型中数组内对象内的单个值并保存?

javascript - 如何获取父对象的函数(NodeJS模块)

javascript - Next Js 自定义路由和 SSR

node.js - 我可以在 Node 项目中使用 Nuget 包吗?

node.js - 错误: Unexpected value 'HttpClient' imported by the module 'AppModule' . 请添加@NgModule注解