我们有一个 4GB 虚拟 Windows 2003 Server,运行 Exchange 2007 和 SQL 2005。虽然我不是这些系统的专家,但我知道 Exchange 使用内存的方式与其他应用程序不同。类似的东西会使用尽可能多的内存,但如果其他应用程序需要内存,它会将其释放。我不确定 SQL Server 是否以相同的方式工作。
最近服务器有点慢,不过重启后性能似乎有所改善。在诊断过程中,我们注意到服务器在页面文件中使用了合理数量的虚拟内存:
http://www.picpaste.com/appserver.PNG
这是值得担心的问题吗?还是在 Exchange 服务器上是正常现象?请注意,它使用了大约一半的可用 VM。
系统配置了 4GB 的物理内存和 5GB 的虚拟内存。我不确定我们是如何得出这个自定义配置的。我觉得这个配置有点高。我似乎记得页面文件的大小是 x2,也就是说,如果是 4GB 的 RAM,它应该有一个 2GB 的交换文件,但这可能是基于旧的做法/暗淡的内存。对于这样的 Exchange/SQL 服务器,页面文件大小的最佳实践是什么?
最后,内存(相对)便宜。您认为这台服务器需要更多内存吗?Exchange 支持 100 个用户,而 SQL 可能有大约 10 个并发连接,对于 SQL 服务器来说,使用率相对较低。
干杯,罗布。
答案1
不确定 Exchange 如何使用 RAM,但 SQL Server 假设它是服务器上的唯一应用程序,并将保留所有内存,只为操作系统留下一小部分。我曾经找到一个 MS 页面,解释了它为操作系统留下的比例以及它考虑的其他事项,但我目前找不到它。
我建议对 SQL Server 可以使用的 RAM 数量设置一个限制,我纯粹猜测我会从 1GB 开始。然后,您应该监视 SQL 和 Exchange 的性能以及监视服务器上的 RAM 使用情况,以查看这是否有任何影响,无论是好是坏。
最后,由于这是一个虚拟服务器,您是否考虑过将 SQL 和 Exchange 分离到单独的虚拟机上,如果您不能这样做,那么我会尝试为这个单个虚拟分配更多 RAM。假设客户操作系统可以使用它。
答案2
我有点困惑:它是虚拟服务器还是物理服务器?
如果您运行的是 Windows Server 2003 Standard,则无法添加物理内存。如果是其他版本,则请参阅此表以了解最大 RAM 限制。
如果这 100 个用户非常活跃,邮箱很大,邮件流量很大,并且 SQL 数据库很大或数据结构复杂,那么您很可能缺少 RAM。虚拟内存消耗表明情况确实如此。
对于 Windows 2003,一个常见的服务器建议是将页面文件设置为 RAM 的 1.5 倍(如果磁盘空间充足且没有其他支持信息)。因此,对于您而言,5GB 并不罕见。最佳做法是不需要页面文件,并让物理 RAM 大小足以应付负载。但是,如果是虚拟服务器,您需要比在物理服务器上更最大限度地减少页面文件的使用,并且您几乎肯定会看到这种工作负载对性能的影响。不过,用户可能不会注意到这一点,例如,如果 Exchange 正在缓存模式下使用,并且 SQL 应用程序交互性不强。
一个技巧是确保页面文件的最小和最大大小相同,换句话说,页面文件不会动态扩展并变得碎片化。看起来,对于你的情况来说,这个建议有点晚了,尽管你可以尝试删除它,对驱动器进行碎片整理,然后重新创建它(如果空间允许,将其设置为 6GB 或 8GB)。