我有一个车队(比如说大约5000辆,少一点)。
我们希望这些车辆每5秒向我们发送一次他们的GPS位置。
因此,作为消息,我们只需要一个字符串(它可能是一个json对象,带有date, latitude, longitude and vehicleId)。
由于我是一个.net web开发人员,我很少使用tcp连接。
我在网上找到了异步服务器和客户端的例子,所以我写了一个小程序,模拟大约5000辆车每5秒钟发送一次消息。
现在,服务器崩溃得很快。它似乎停止接收信息。我要调查一下为什么今天…
我的问题是:我走得好吗?我是说我只听一个端口的5000辆车。
如果我监听50个端口,每个端口100辆车,会有更好的结果吗?
你认为会有更好的方法来做我想做的事吗?
提前谢谢。

最佳答案

首先,5秒是一个相当短的时间来获得一个更新,这是不会有太大改变。检查您的业务案例是否接收了如此多的数据。你可以用更多的断断续续的电话。(我想说每分钟1次是最低要求,我们过去经常做15分钟的更新)。
对于接收大量简单数据的调用,您可能会发现构造一个对象来处理它,而且构造管道通常要花费太多时间。在进入下一个数据包之前,您应该限制传入的数据,读取数据包并快速处理它们。对于这种情况,同时处理许多这些传入流的大型系统可能不是最佳解决方案。当然,对于每个传入的数据包都有一个对象处理程序,并试图同时处理所有这些数据包,这将是一个灾难。
如果没有更多的信息,我就帮不上忙了——你需要分析资源的使用情况,无论是在系统中设置了太多的处理器,还是在网络或CPU上,并改变架构以将这些方面的影响降到最低。

关于.net - 处理数千个连接的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22981531/

10-11 22:38
查看更多