我们可以同时发出多少个 HTTP 请求?

Joe*_*son 6 .net c# windows-7

我可以同时发出多少个 HTTP 请求?底层操作系统是否有任何规则?我在 Windows 7 上。例如:如果我启动 100 个线程,它们会同时执行吗?如果是,它是取决于 RAM 的数量还是固定的而与 RAM 大小无关?

Roy*_*tus 9

这取决于,像往常一样......这里有几个方面需要牢记:

(1) 您的 PC/服务器一次可以处理多少个线程?这取决于内存、CPU 功率(例如内核数)、服务器正在执行的其他操作以及线程是否执行 I/O 密集型工作。使用 .NET,根据版本的不同,ThreadPool 也有不同的限制(例如,对于 .NET 4:32 位版本最多 1023 个线程,64 位版本最多 32768 个线程)。

(2) 您的 Windows 也可能被配置为允许最大数量的传出 HTTP 或 TCP 连接(如果我没记错的话,Windows 有 64K 的传出 TCP 连接的硬限制)。

(3) 如果您通过代理服务器连接,该代理服务器也可能对传出连接施加限制。如果您通过防火墙,情况也是如此;这也可能会阻止太多同时传出的连接。

(4) 您是否打开到同一台服务器的所有连接?因为 web 服务器也有它们的限制,并且可能被配置为只允许来自给定源的 x 个传入请求。

所以恐怕你必须尝试找出你的情况下的限制是什么,除非你知道这些数字。