node.js - Node.js 应用程序在调用 WSL 2 时不断收到 ECONNRESET 错误
问题描述
在带有 WSL 2 的 Windows 10 上运行,我有一个 Node.js 应用程序 (App1),我正在尝试使用另一个 Node.js 应用程序 (App2) 加载测试。App2 模拟 App1 所依赖的 HTTP 服务,即 AWS 和 Salesforce API。Salesforce 部分使用 CometD 协议将消息推送到 App1。
App2 在 WSL 2 中的 Ubuntu 上运行。App1 在 Windows 10 上运行。两者都在同一台物理机上。
当我通过 CometD(HTTP 长轮询)将数千条消息推送到 App1 时,App1 开始阻塞并收到以下错误:
error: {
"errno": -4077,
"code": "ECONNRESET",
"syscall": "read"
}
我杀死 App1 并重新启动它,但它继续收到相同的错误。无论我是通过 VSCode 运行 App1 还是仅从命令行使用 node 都没有关系。
奇怪的是,我可以使用 WSL 2 上的 bash 中的 CURL 向 App2 发出请求,并且效果很好。我能让 App1 再次与 App2 对话的唯一方法是重新启动计算机。
为什么会发生这种情况,有没有办法可以修复它而无需重新启动 Windows?
解决方案
重新启动 WSL 2 可以(暂时)工作,并且不需要重新启动 Windows。
从命令行运行:
wsl --shutdown
推荐阅读
- machine-learning - 如何在 google colaboratory 上解压缩 .7z 文件?
- wordpress - 我编辑了指向 https 的 wordpress url 链接,而我还没有安装 ssl 证书。我的网站不再运行
- elasticsearch - 多边形查询中的 Elasticsearch 点
- computation-theory - 如何证明一个集合是可判定的、半可判定的或不可半可判定的?
- selenium - 如何切换到在另一个里面硒中的 s
- android - 按搜索按钮清除列表视图上的所有项目/模型
- ffmpeg - FFMPEG 提取 1 秒,使用复制编解码器调整大小
- python - Python Tkinter 画布类继承
- c - rand() 函数行为
- r - 如何在 sapply 中将公式作为参数传递给 lm?