0

我正在编写一个玩具示例来进行 NAT 遍历。对广泛使用的桌面应用程序如何做到这一点感兴趣,我使用了wireshark 来尝试分析它的流量。在对输出进行一些研究后,我意识到服务器通知(例如,“新文件添加到您的 xxx 文件夹”)使用某种 Comet 机制工作,具有长寿命的 HTTP 连接。但最让我吃惊的是,尽管流量很低(1 个 HTTP GET 及其每分钟的响应),但 TCP 连接从未关闭。我可以保证连接在至少 20 分钟内没有关闭。

到目前为止,我的理解是同时打开大量长寿命的 TCP 连接会很快消耗服务器的资源(主要是内存方面)。所以我的问题是,这种应用程序如何能够长时间有效地保持如此大量的 TCP 和 HTTP 连接同时打开?他们是否使用某种特殊的服务器?还是只需要添加硬件以进行水平扩展?

我用谷歌搜索了很多试图找到答案,但没有运气。也许我错过了一些非常明显的东西。

4

1 回答 1

1

也许你可以看看epoll (Linux)、kqueue (freebsd)、libev和 libevent 来了解一下。

来自 epoll 的维基百科页面:“其中观看的文件描述符的数量很大”。您可以用 TCP 套接字替换“监视的文件描述符”。

于 2012-05-14T01:48:06.513 回答