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