【发布时间】:2025-12-31 20:05:03
【问题描述】:
我想用 NodeJS 创建一个 Express 服务器,其中一个端点需要执行繁重的 bash 操作。但是这样做会疯狂地减慢整个服务器的速度!例如我创建了一个端点/ping,它只是在后台执行ping 8.8.8.8 命令并返回结果。
如果我向服务器发起 2 个并行请求,它们会互相阻塞并一个接一个地执行:
我尝试使用工作线程,但无法完成。这在 NodeJS 中是否可行?如果不是......我怎么能做到这一点?
【问题讨论】:
-
您需要向我们展示用于执行 ping 的服务器端代码。您是否使用阻塞呼叫?如果不是,这可能是由浏览器本身引起的,而不是由您的服务器引起的(为了优化缓存),如果您从浏览器发出多个相同的请求,它会等待第一个请求看是否可以使用(通过缓存)用于后续请求。您可以通过向每个请求添加可变查询参数
/ping?id=1和/ping?id=2来绕过它,然后 URL 不再相同,但它们仍会转到您服务器上的相同路由。 -
不应要求工作线程。
-
请提供足够的代码,以便其他人更好地理解或重现问题。
标签: node.js multithreading express npm node-worker-threads