C#TCP异步连接被主动拒绝,CPU利用率低

C#TCP异步连接被主动拒绝,CPU利用率低,c#,multithreading,sockets,amazon-ec2,C#,Multithreading,Sockets,Amazon Ec2,我有一个C#TCP异步套接字服务器 通过本地测试,我可以在35秒内接受5K连接。我正在运行一台四核超线程PC(8个线程),每个核心的利用率约为20-40%。当连接被接受时,服务器向客户端请求一组数据,然后执行一组数据库条目 我将服务器应用程序和SQL数据库移动到AmazonAWS上的一个小型数据库和中型服务器实例 亚马逊媒体服务器(EC2)是一个虚拟核心和两个ECU。据我所知,它只有一个线程。(来自性能监视器) 如果我尝试在35秒内将1000个客户端连接到介质服务器。大约650次连接后,我开始接

我有一个C#TCP异步套接字服务器

通过本地测试,我可以在35秒内接受5K连接。我正在运行一台四核超线程PC(8个线程),每个核心的利用率约为20-40%。当连接被接受时,服务器向客户端请求一组数据,然后执行一组数据库条目

我将服务器应用程序和SQL数据库移动到AmazonAWS上的一个小型数据库和中型服务器实例

亚马逊媒体服务器(EC2)是一个虚拟核心和两个ECU。据我所知,它只有一个线程。(来自性能监视器)

如果我尝试在35秒内将1000个客户端连接到介质服务器。大约650次连接后,我开始接收连接失败(b)由于目标计算机主动拒绝,无法建立连接

查看性能监视器时,我注意到CPU利用率只有~10-15%

我猜核心没有被加载是因为它试图处理大量连接和小型操作,并且没有提供足够的负载来提高CPU使用率,因为服务器只有一个虚拟核心

有人对此有经验吗?我的理论有意义吗?我被硬件限制卡住了?(需要增大服务器大小吗?)

如果没有,如何获得更多的利用率和支持更多/更快的连接

有人有这方面的经验吗

编辑:

我将AmazonEC2上的实例升级为高CPU超大实例

该实例现在有8个内核和20个ECU


我遇到了相同的问题,无法建立连接,因为目标计算机在大约600次连接后主动拒绝了它。

您的代码在本地运行时似乎使用了多个内核。当您将代码移动到单核时,是否对其进行了更改?。在我的应用程序中,当我测试虚拟用户创建并以编程方式让他们同时访问应用程序时,我也看到了类似的情况。在某个号码之后,我通常会断开连接/无法访问


如果您的需求是高利用率,那么您可以使用更高的配置EC2并获得保留实例(如果您希望长期使用它),这可能会使您付出非常经济的代价。另外,尝试使用cloudfront、loadbalancer(如果您有2个或更多实例)。它们肯定会提高您当前可以处理的用户数量。希望有帮助。

检查Amazon服务器是否配置为允许这么多打开的TCP连接。在windows中,您必须通过为允许的最大TCP连接添加注册表项来将服务器设置为允许连接。

我能够解决此问题。我将实例升级为使用PIOPS。我还在本地使用了更好的互联网连接,因为我以前的上传速度太慢,无法支持发送所有数据和连接


通过这两项更改,我可以在本地创建5K+TCP连接并连接到服务器。没有问题。

您是否在单独的线程上处理“向客户端请求一组数据,然后执行一组数据库条目”部分?如果没有,则可能从db I/O时间开始就出现了积压。原因可能是数据库延迟,请尝试禁用数据库访问并返回虚拟数据,这可能会显示是网络/计算机还是数据库。我将再次检查。一旦得到套接字,我就调用EndAccept()并获得客户机套接字。我立即调用beginacept()。然后调用waitForData(),它是asych,当wait-for-data从客户机接收数据时,它在单独的线程上进行数据库处理。我认为来自EC2的中间实例(1个虚拟核心和2个ECU)只有1个线程。这可能是问题所在。但是我的核心CPU利用率非常低。@JoachimIsaksson数据库禁用存在同样的问题您正在运行什么操作系统?是的,我的代码在本地使用了多个核心。转到亚马逊,因为我只有一个核心,我认为这就是问题所在。然而,即使有一个内核,我的CPU利用率会这么低吗?你说在本地设置的一个内核上,你的CPU利用率达到20-40%,同时处理5k连接,所以每个内核大约1.25k/内核,对吗?因此,在EC2中,您只能同时获得600个连接,之后连接将中断。。我建议您对代码进行更改,并至少使用70%的单核。也可以尝试使用cloufront,或者使用更高的配置ec2。这就解释了一切。或者修改代码以利用70%的cpu。。或者使用多核、超线程、保留实例。您好,根据我的帖子,我遇到了与您相同的问题:…您知道这些因素中的哪一个解决了问题,还是两者都解决了?谢谢你的帮助,回答了我自己的问题。。对我来说,从客户端尝试不同的网络是可行的。一定是互联网连接。