使用100-1000GB内存测试Java库

22
我有一个开源库,旨在高效支持非常大的集合。我已经在24 GB的PC上测试过它,但希望在更大的系统上测试它,最高可达1 TB。大多数托管解决方案不支持这种内存大小,而我只需要短暂访问。
我测试了一个包含12个字段的5亿个对象的集合,完整GC时间低于0.11秒。我还进行了另一项测试,其中仅使用了一个位来存储1280亿个元素。
库/测试很小,所以我除了大量的主内存之外没有太多要求。
你有任何建议,可以在不购买自己的96或192 GB服务器的情况下进行这种测试吗?

10
我得问一下:如果你找不到一个合适的环境来进行这种测试,这是否意味着这些测试本身的有效性有问题?不是要泼你的冷水,但如果用户很少有机会以如此极端的方式使用你的库,为什么还要用如此庞大的对象进行测试呢?如果你确实有(潜在的)用户,他们很可能能够为你提供一个适合的测试环境(因为那应该部分地模仿他们的生产环境)。 - Guus
4个回答

8

联系Contegix - 由于您需要测试开源库,他们可能会免费帮助您。我最近因为同样的需求与他们联系,他们在一天内通过电子邮件跟进,并在第二天打电话给我。他们非常乐意使用跨越多个服务器的大量内存进行扩展测试。

他们的创新倡导者页面描述了他们已经帮助的人群。只需填写他们的联系表格 http://www.contegix.com/contact/,他们就会很快回复您。


8

EC2提供高内存实例,每个实例最多可达68.4GB,并按小时计费。虽然不是100GB的内存,但如果将它们堆叠在一起……


1
问题是在一个JVM中运行它。 ;) 这可能是最好的选择。我希望还有其他选项。 - Peter Lawrey
1
目的是为了测试性能,并使用多台机器来改变行为。看起来我可以花费约3000英镑购买一台128 GB的机器。但我宁愿不这样做,只是为了测试软件。 - Peter Lawrey
另外一份报价是1.8千英镑,用于购买一台96GB的机器。 - Peter Lawrey
@PeterLawrey,使用默认的Hotspot VM确实会在极大的内存大小上出现问题,也就是说,azul system存在的原因(以及托管Cliff的博客,这是我需要的全部内容;))。据我所知,对于大堆来说,GC时间变得非常可怕,一般的一致性/延迟也会受到相当大的影响。因此,我不知道您的软件在现实中会遇到多少如此大的单个JVM。 - Voo
1
@Voo,我同意堆大小本质上是有限的。这就是为什么该库使用直接内存和内存映射文件的原因。它们只会带来微不足道的GC开销。一个JVM可以使用32GB的内存,而堆大小却小于16MB。 - Peter Lawrey
显示剩余4条评论

1

也许你可以使用一个"虚拟化"JVM,比如 Zing -- 它的最大堆大小为512 GB。如果你联系他们,也许他们会允许你免费进行这个测试 -- 这对于他们的垃圾收集器来说是一个很好的展示。


0
你应该看看亚马逊 EC2 或谷歌应用引擎。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接