当我构建一个 EC2 实例 m1.small(例如)时,默认情况下我得到 30gb 而不是 160gb。
我在谷歌上看到我需要添加临时存储/实例存储.. 对于我的问题: 有没有办法使用 java sdk 添加临时存储? 如果我创建一个标准卷为 160gb 的实例(使用 sdk),我会像创建一个常规实例一样被收费并附加一个新卷吗?
更一般地说,所以当他们写一个实例有 160gb 时, 这意味着我只有 30 GB 和另外 140 GB,我应该只将它们用于我不介意丢失的临时文件?
提前致谢。
最佳答案
你不应该试图让堆大小比主内存大很多。 AFAIK EC2 不提供主内存超过 160 GB 的机器(我可能错了)http://aws.amazon.com/ec2/instance-types/
如果你说的是这个实例
M1 Small Instance – default++
1.7 GiB memory
1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit)
160 GB instance storage
32-bit or 64-bit platform
I/O Performance: Moderate
EBS-Optimized Available: No
API name: m1.small
这表示,您可以使用大约 1.2 到 1.5 GB 的堆和 160 GB 的本地磁盘空间。
据我所知,您可以像访问普通文件一样访问存储空间。
顺便说一句:Java 在大型堆上执行 Full GC 可能需要越来越长的时间。根据您的系统,最差的时间可能是每 1-4 GB 1 秒。您可以预期具有 160 GB 堆的系统可以看到 40 秒的 stop-the-world GC。
出于这个原因,堆外选项经常被探索,例如使用数据库、BigMemory 或使用直接内存/内存映射文件。
关于java - 创建超过 30gb 的 EC2 实例 - 在 Java 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13836784/