我创建了一个服务器客户端(我创建了客户端,我的同事用不同的语言创建了服务器)应用程序。当我尝试将 900 多个客户端(所有单独的 TCP 客户端)连接到服务器时,我得到以下异常:
No connection could be made because the target computer actively refused it.
套接字错误:10061
WSACON拒绝
拒绝连接。由于目标计算机主动拒绝,无法建立连接。这通常是由于尝试连接到在外部主机上处于非活动状态的服务(即没有服务器应用程序运行的服务)造成的。
最终,如果我等待足够长的时间,它们将全部连接(因为我们自己重新连接/保持活动状态)在 TCP 套接字之上。因此,如果它失败了,它将再次尝试直到成功。
我是否收到此错误是因为服务器“超载”并且无法一次处理所有请求(我在一个单独的线程中创建了 900 个客户端,所以它几乎都在尝试同时连接)。
有没有办法应对这种情况?我们可以调整一个 TCP 套接字选项,以便它可以同时处理更多的客户端吗?还需要注意的是,我在同一台机器上运行服务器和客户端,在不同的机器上运行它似乎可以减少错误消息的数量。这就是为什么我认为这是某种容量问题,因为服务器无法快速处理它们。