在使用Python的情况下,单台机器(Windows Server 2008)允许的最大并发HTTP连接数是多少

4 投票
2 回答
5378 浏览
提问于 2025-04-15 12:53

更具体一点,我正在使用Python,并且创建一个HTTP连接池(httplib),我想知道在Windows服务器上同时可以有多少个HTTP连接的限制。

2 个回答

3

据我所知,每台机器上用于互联网连接的插座数量是有限的,但这个数量通常很高。对于客户端来说,同时建立1000个连接一般没什么问题,因为每个插座占用的内存很少。不过,如果你开始通过这些连接接收数据,情况可能会有所不同。我听说过一些测试环境,可以从一个客户端同时创建几千个连接。

但对于服务器来说,情况通常就不一样了,因为它需要处理每个进入的连接(比如启动一个工作进程等)。1000个进入的连接肯定会影响服务器的性能,如果这些连接都是来自同一个客户端,服务器可能会把它们当作拒绝服务攻击(DoS攻击)。希望你能同时管理客户端和服务器……或者它们是在同一台机器上?

3

根据HTTP的标准,一个客户端不应该同时与一个网页服务器或代理保持超过两个连接。不过,大多数浏览器并不遵守这个规则,比如火狐3.5就允许每个服务器有6个连接,每个代理有8个连接。

简单来说,你不应该对一个服务器打开1000个连接,除非你的目的是为了影响服务器的性能。对服务器进行压力测试是一个合理的例子。


[编辑]
如果你说的是代理,那情况就有点不同了。我建议使用连接池。找出多少个同时连接能让你每秒请求最多,然后设定一个硬性限制。多余的请求就得在队列里等,直到有连接空出来。要注意的是,单个进程通常默认最多只能有1024个文件描述符。

可以看看apache的mod_proxy,获取一些处理这个问题的想法。

撰写回答