服务器实际需要多少内存?

Ang*_*ker 13 windows-server-2003 64-bit memory-usage sql-server-2005

我在世界各地部署了相当多的服务器。他们运行 Windows 2003 x64 和 SQL Server 2005 x64,6 GB RAM。这些盒子没有最好的(甚至是可接受的)配置,因为几年前订购它们的人并不真正知道他在做什么。

这些盒子总是内存不足,最终使用分页文件,一切都变慢了。通常提交费用是 5.8GB,然后当有人需要做一些密集的事情(例如运行报告)时,这个数字就会飙升。

我一直试图获得订购更多内存的权力,但我遭到了强烈反对(例如,使软件性能更高,所有这些服务器的成本太高,或者证明盒子没有足够的内存等。 ...)。

我可以向非技术人员展示一个盒子需要多少 RAM 的指南(或公式),以便我们最终可以订购更多内存?

mrd*_*nny 12

查看是否需要更多 RAM 的一种简单方法是绘制页面预期寿命性能计数器的图表。此计数器告诉您 SQL Server 认为在需要为其他数据腾出空间之前,数据将在缓冲池中保留多长时间。您希望这个数字尽可能高。安装了 6 Gigs 的 RAM(您应该将 SQL 设置为最大大约 4 gigs),您可能最多只能将数据保存在内存中几分钟,当有人运行大型报告时,您会看到这个数字坦克低至几秒钟。您拥有的 RAM 越多,数据可以保存在内存中的时间就越长,需要从磁盘读取的数据就越少。

例如,我目前使用的系统有 256 Gigs 的 RAM,我们将数据保存在内存中大约 12000 秒左右。

请不要要求达到目标数字,您只是希望数字尽可能高。在对您的系统没有更多了解的情况下,我无法给出一个好的数字。


Bar*_*rim 9

不是很容易分辨,因为它完全取决于您的使用情况和应用程序。您正在最大化数据库服务器...数据库有多大?你的交易数据是什么?

在您的场景中,现实世界的限制是显而易见的。你在 6 gig 上运行了一段时间没有问题,然后它正在交换和颠簸。因此 6 gig 是不够的。

如果性能足以影响业务,那么你的上级应该听到足够多的抱怨,认为提高内存是谨慎的。弄清楚您的时间成本,然后计算出“调整”服务器和排除调整故障的成本,当添加到服务器的内存可能很好地解决内存成本和不到半小时的问题时停机时间。

在您实际部署到您的实际使用中并从那里开始工作之前,您不会知道您需要的确切内存量。

也就是说,您可能想要验证您的应用程序是否确实是瓶颈。运行 Windows 性能监视器以查看您的磁盘 i/o 统计信息和网络吞吐量。看看你的碎片级别是多少(谷歌是这里的好朋友)。您也可以尝试审核代码以查找明显问题,其中查询效率非常低(再次使用 Google)。

但这一切都取决于这对业务的影响有多严重。是否值得在调整上投入更多资金,还是先将硬件投入其中然后尝试调整它已经够糟糕了?


Sat*_*ppy 6

嗯嗯。好吧,即使对于大型 MSSQL 安装,6 演出也是相当数量的内存。您可能实际上想要查看并确保您的代码确实有效。6 演出交易有点不寻常......我曾在全州范围内的工资系统上工作,该系统在 1099 年年底处理时没有超过演出......并且经常运行?我不知道。你在处理什么样的数据?

话虽这么说,你可以在 64 位的盒子里塞满你喜欢的内存,而且内存非常便宜,所以最好尽可能多地放进去......不能真的有太多内存一个数据库服务器。

编辑:这现在已经过时了。我有 256 演出内存的 MSSQL 盒子。

  • @robert:我并不是在提倡购买刀片服务器。最大化服务器中的 RAM 非常容易,如果您的内存不足,为什么不添加更多呢?我认为问题可能出在他的代码中,但是如果您可以用价值几百美元的 RAM 来解决问题,那就是对金钱的有效利用。 (2认同)