我正在为我在 Amazon EC2 网络上的网站选择 AMI。似乎 Ubuntu 实例有 32 位或 64 位版本。大概 64 位系统会给你更多的内存地址空间,这很好。但是,我想知道查找预编译的二进制文件是否有问题。我最好坚持使用 32 位吗?我的 Web 应用程序不是非常占用内存。
为什么我会选择一个而不是另一个,优点和缺点是什么?
我正在为我在 Amazon EC2 网络上的网站选择 AMI。似乎 Ubuntu 实例有 32 位或 64 位版本。大概 64 位系统会给你更多的内存地址空间,这很好。但是,我想知道查找预编译的二进制文件是否有问题。我最好坚持使用 32 位吗?我的 Web 应用程序不是非常占用内存。
为什么我会选择一个而不是另一个,优点和缺点是什么?
您应该根据所需服务器的大小做出决定。
32 位 AMI 仅在 上运行,而m1.small
64 位 AMI 仅在实例上运行(加上相应的高 CPU 变体)。m1.large
m1.xlarge
更大的实例显然需要更多的钱,理论上价格与性能成线性关系。但是,我发现大型和 xlarge 实例实际上比小型实例具有更高的性能/美元。
这似乎不是由于 32 位或 64 位架构,而是由于 I/O 控制器的争用。如果您在 EC2 上做认真的工作,我建议您使用m1.large
实例,以及所需的 64 位 AMI。
在 64 位部署期间,我的团队出现的一个问题是 64 位机器上的指针更大,因此内存耗尽的速度比我们想象的要快。
不是答案,我知道,只是提醒一下。
自 2012 年 3 月 8 日起,Amazon EC2 支持所有实例类型的 64 位 AMI。
这使得此列表中的先前答案已过时,因为它们假设不同的实例类型需要不同的架构选择。
我建议始终使用 64 位 AMI,以便您在更改实例的实例类型方面拥有最大的灵活性,并且从该实例创建的自定义 AMI 将适用于任何其他实例类型。
我在这里写了更多关于此的内容:http: //alestic.com/2012/03/ec2-64-bit
读者对该文章的评论中有一些很好的讨论点,用于专门的异常,其中 32 位可能比 64 位执行得更好,但请记住,这限制了您可以在哪些实例类型上运行。
如果成本是优先考虑的,那就选择 32 位。如果性能很重要,请选择 64 位。
基础已经回答了。我只想指出,相对较新的微型实例同时支持 32 位和 64 位。这(还)不适用于小型实例。
缺点:就像 RKitson 所说,64 位指针占用的内存空间是原来的两倍。如果这意味着你的东西现在不适合 CPU 缓存,这可能会降低性能。
优点:您获得双倍的寄存器 - 从中受益的程序将显示出很多性能改进。(第二个专业人士:64 位版本的软件包都在 SSE 支持下编译......这也可以提高性能,具体取决于您的工作量)
我只会构建两个图像并对其进行基准测试,这比理论化更容易,也不应该花费数天时间。
我会说选择 32 位,除非您出于性能原因确实需要 64 位。您可以在 m1.small 实例上运行 32 位 Ubuntu,成本为 10c/实例小时,或约 75 美元/月;相比之下,64 位最便宜的选择是 m1.large,它的成本是它的四倍——40c/实例小时或大约 300 美元/月。
64 位为您提供更多内存地址空间,并且可以更好地执行处理器密集型任务。假设您使用 PHP 和 Mysql 等标准软件,查找二进制文件应该不是问题。除非您有一些可能无法在 64 位下运行的稀有库,否则我会选择 64 位。