我最近使用 hyper-v 设置了 2012 服务器核心。然后我安装了服务器核心 2008 R2 作为客户端。安装了 IIS 并开始托管内部网站。我开始运行吞吐量测试,发现 Web 服务器无法处理预期的流量。VM 配置了最大 6 GB 的动态内存(远远超过这个简单页面所需的内存)。
经过大量阅读,我发现 IIS 根据启动时可用的 RAM 数量来计算其最大连接数。因此,我将 hyper-v 中的启动 RAM 更改为 6 GB(最大值),现在吞吐量测试符合我的预期。即使分配的内存只有 668 MB。
我的问题是,IIS 是否需要在启动时使用其最大内存来进行该计算?如果我的启动内存为 1 GB,IIS 是否会尝试使用超过该内存的内存?如果我有五六台 Web 服务器,并且必须为每个服务器分配最大内存(可能超过总可用内存),那么在重新启动时(一次启动所有计算机)会出现问题吗?基本上,我是否需要将最大内存设置为起始内存?
答案1
Server 2012R2 作为主机实际上允许您同时启动所有虚拟机,即使它们的总 RAM 超过了主机的 RAM。它们会将部分状态分页到磁盘,直到动态内存代理启动并耗尽不需要的内存。
至于你关于 IIS 的问题,我不知道它是如何编码的。显然可以这样编码,使其在启动时不需要所有可用的 RAM。不过,这比仅查看报告的 RAM 大小的编码更复杂。