构建具有大量 RAM 的服务器的经济有效方法

构建具有大量 RAM 的服务器的经济有效方法

我有一个 Java 应用程序,其可扩展性主要受 RAM 限制,我想在数据中心的一个或多个服务器上运行它。我应该在哪里寻找可以容纳 100GB - 512GB 或更多 RAM 的服务器硬件?我不是这方面的专家,所以我真的不知道从哪里开始。

这是进入超级计算机领域(6 位数或以上)吗,或者我是否可以以低于 5 位数的美元获得这样的服务器?

根据以下一些问题,做几点说明:

  • 是的,我曾努力想办法消除这种可扩展性要求,但事实并非如此。应用程序从根本上需要非常快速地随机访问大量数据,存储在硬盘中(也许通过数据库)无法满足要求。
  • 我非常确信 JVM 至少在理论上可以扩展到这么大。我经常在分配给 Sun 1.6 JVM 的 10GB 内存下运行代码,没有出现任何明显问题。

答案1

不寻常的需求有时会受益于不寻常的解决方案。当然,你可以给 Sun、Dell 或 HP 6 位数,然后就搞定了,但这不是唯一的选择。

对于单盒解决方案,获得高达 128GB 的​​价格非常便宜(32 x 4GB ~ 3,000 美元),即使使用成本低于 1,000 美元的自制主板也是如此。(不要嘲笑制造商。如果它对谷歌来说足够好......)

256GB 确实贵多了(32x8GB~18,000 美元),而且除此之外……

或者,您是否考虑过使用 Infiniband(10Gbps)互连的廉价盒子作为替代方案?

您可以用这种方式构建一台 4 节点、16 处理器(64 核)、512GB 的机器,而且仍然可以获得 25,000 美元的零钱。

如果您的应用程序可以在 3 台机器上运行(如果其中一台发生故障),那么您还将获得优雅降级的额外好处,并且可能将成本线性扩展到 8 个节点(只需添加 4 个节点)。那时你正在寻找一款售价不到 50,000 美元的酷炫 128 核、1TB RAM 怪兽

在您认为 Infiniband 提案很奇特之前,请先了解一下它并不适用于您所要求的机器类型。例如,排名前 500 的超级计算机中有 141 台是采用这种方式构建的,包括排名前 10 的超级计算机中的 4 台(http://top500.org/connfam/8

答案2

好吧,你看。你不会找到具有所需 RAM 占用空间的服务器,至少不会找到不需要自己的电网的服务器。

为什么不采用可扩展的方法并使用 memcached?您可以将内存分散到网络上的不同机器上。数据永远不必接触磁盘驱动器,而且有了您所说的用钱就能买到的超高速网络,延迟几乎不会成为问题。

以下是 Java 的 memcached 客户端:http://www.whalin.com/memcached/

如果你不熟悉的话,下面是 memcached 的简介:http://www.danga.com/memcached/

仔细研究一下。这比构建一台拥有大量 RAM 的巨型机器更具成本效益。此外,如果您正在做有这种要求的事情,那么它可能是一项关键任务,并且您不需要单点故障。

答案3

4 或 8 插槽 Opteron 服务器(例如 HP DL585 或 DL785 或 Sun X4600)可以占用 128-256GB 范围内的大量内存。虽然它们并不便宜,但它们肯定不会接受 6 位数的价格标签;8 路、32 核 Sun X4600 配备 256GB RAM 的价格在其网站上标价约为 35,000 美元,而这大概就是这种类型的系统所能达到的最大价格。您可能会发现,您可以以略低于网站上显示的标价的价格购买该系统。

尽管有 4Gb DIMM 可用,但它们的价格往往要高出很多,因此,升级到配备最大容量的系统的成本会高得多。

如果您想使用这种类型的系统,您将需要 64 位操作系统。确保您还获得了 64 位 JVM,并检查它是否与您的应用程序配合良好。

答案4

选择这种 RAM 大小时一定要小心。我们曾将 HP 机器扩展到 64 GB(HP 表示该机器可以容纳 128 GB),但前提是添加了额外的提升板、冷却轴等(与 HP 进行了多次沟通之后)。
仅仅因为机器指定最多可容纳 n GB,并不意味着它无需额外更改即可工作。在我们的案例中,并非所有普通内存模块都能工作,因为它们太热了,只有非常特定的模块才能工作。

相关内容