【发布时间】:2016-05-10 18:41:48
【问题描述】:
我们有一个 C# Web API 服务器和一个 Node Express 服务器。我们从 C# 服务器向 Node 服务器上的路由发出数百个请求。 Node 服务器上的路由做了大量的工作,经常 6-8 秒不返回。
同时发出数百个这样的请求似乎会导致 Node 服务器失败。节点服务器输出中的错误包括 socket hang up 或 ECONNRESET。 C# 方面的错误说
由于目标机器主动拒绝,无法建立连接。
在处理不可预测数量的请求后会发生此错误,这使我认为它只是使服务器超载。在 C# 端使用Thread.Sleep(500) 可以让我们处理更多请求,并且摆弄那里的等待或多或少会导致成功,但是线程休眠很少是正确的答案,我认为这种情况也不例外。
我们是否只是对 Node 服务器施加了太大的压力?这只能通过负载平衡或某种形式的集群来解决吗?如果有另一种选择,它会是什么样子?
我开始探索的一条路径是node-toobusy 模块。如果我返回 503,那么下面代码中的过程应该是什么?我应该Thread.Sleep然后重新提交请求吗?
【问题讨论】:
-
听起来你的node.js服务器只在一个进程中运行,所以负载均衡还没有关系
标签: node.js multithreading server load econnreset