【发布时间】:2012-12-18 11:23:30
【问题描述】:
我在 Windows 2008 上编写了一个简单的小型服务器应用程序,它只接受连接,不做任何其他事情。我正在对套接字调用进行内存占用评估,我发现每个连接(在接受()之后)至少消耗 2.5 KB 的内存。有趣的是,内存不是由调用 accept() 的进程消耗的,而是由操作系统进程消耗的。我相信这可能是因为在操作系统内部为每个连接创建了数据结构。
现在,我有两个关键问题:
是否可以通过任何方式减少这种内存占用(通过更改任何参数、配置等)?如果是怎么办? (因为如果我们计划服务器接受数百万个连接,每个连接的 2K 就太多了)
如果我的服务器打算接受数百万个连接,那么使用 Windows 2008 是个好主意吗?还是我应该切换到其他操作系统?
请给我建议。
【问题讨论】:
-
你不应该在Stack Overflow上问吗?
-
@Atul 请不要交叉发布。在最合适的网站上提问并等待答案。谢谢。
-
数以百万计的 TCP 连接?同时在一个盒子上?如果你做到了,请发表你的发现。微软、亚马逊、Facebook 和谷歌的一些人很想知道你是如何在一个盒子上同时获得 100 万个连接的。说真的,如果你的服务这么大,你会不会计划每台机器有 10-100K 的适度连接,并在多个服务器上使用负载平衡器?