Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 处理数千个连接的最佳方法_.net_Sockets_Tcp_Asynchronous - Fatal编程技术网

.net 处理数千个连接的最佳方法

.net 处理数千个连接的最佳方法,.net,sockets,tcp,asynchronous,.net,Sockets,Tcp,Asynchronous,我有一个车队(假设大约5000辆,稍微少一点) 我们希望这些车辆向我们发送其GPS位置,比方说每5秒发送一次 因此,作为一条消息,我们只需要一个字符串(可能是一个带有日期、纬度、经度和车辆ID的JSON对象) 由于我是一名.NETWeb开发人员,我没有在TCP连接方面做很多工作 我在网上找到了异步服务器和客户端的例子,因此我编写了一个小程序,模拟大约5000辆汽车每5秒发送一次消息 目前,服务器很快就会崩溃。它似乎停止接收消息。我需要调查为什么今天 我的问题是:我走的好吗?我的意思是,对于500

我有一个车队(假设大约5000辆,稍微少一点)

  • 我们希望这些车辆向我们发送其GPS位置,比方说每5秒发送一次

  • 因此,作为一条消息,我们只需要一个字符串(可能是一个带有日期、纬度、经度和车辆ID的
    JSON对象)

  • 由于我是一名.NETWeb开发人员,我没有在TCP连接方面做很多工作

  • 我在网上找到了异步服务器和客户端的例子,因此我编写了一个小程序,模拟大约5000辆汽车每5秒发送一次消息

  • 目前,服务器很快就会崩溃。它似乎停止接收消息。我需要调查为什么今天

  • 我的问题是:我走的好吗?我的意思是,对于5000辆车,我只在一个端口上收听

  • 如果我监听50个端口,每个端口监听100辆车,会有更好的结果吗

  • 你认为会有更好的方法来做我想做的事吗


  • 提前感谢。

    首先,5秒是获得不需要的更新的很短时间;我真的不会有太大的改变。检查您的商业案例以获取如此大量的数据。你可以通过更多的断断续续的电话逃脱。(我想说,每分钟1次是最低要求,我们通常会做15分钟的更新)

    对于接收大量简单数据的调用,您可能会发现构造一个对象来处理它,通常构造管道会花费太多时间。您应该限制传入数据,读取数据包并在继续下一个数据包之前快速处理它们。对于这种情况,一个同时处理许多传入流的大规模系统可能不是最佳解决方案。当然,对每个传入的数据包都有一个对象处理程序,并试图同时处理所有这些数据包会导致灾难


    如果没有更多信息,我无法提供更多帮助-您需要分析资源使用情况,无论是在系统中设置太多处理程序,还是在网络或CPU中,并更改体系结构以将这些方面的影响降至最低

    看看NodeJS,因为从我的角度来看,它完全适合您的用例。与“标准”同步编程技术相比,您将能够处理更多的并行请求

    例如,去看看能实现什么

    请注意,我猜您还需要一个数据库来存储数据,每秒1000次插入也会使许多db服务器陷入麻烦。您可能想看看Redis或MongoDB之类的东西来进行扩展

    还有一些关于如何使用与您的需求类似的.NET异步功能的例子:我个人不能对它的性能说任何话