6

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

4

1 回答 1

9

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

(1) 您的 PC/服务器一次可以处理多少个线程?这取决于内存、CPU 能力(例如内核数量)、服务器正在做什么以及您的线程是否执行 I/O 密集型工作。使用 .NET,线程池也有不同的限制,具体取决于版本(例如,对于 .NET 4:32 位版本中最多 1023 个线程,64 位版本中最多 32768 个线程)。

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

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

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

因此,除非您知道这些数字,否则恐怕您必须进行试验以找出您的情况的限制。

于 2013-09-03T06:27:37.393 回答