所以,我现在正在写我的学士论文,我的工作是将一个networking服务变成一个网站,推荐一个图像的配乐。 build议过程的主要部分是对〜40GB索引文件的查找。 索引文件是只读的,阅读它应该尽可能快。 我也想根据需求自动启动额外的实例。 我做了一些研究,并有三种可能的方法来做到这一点
我也在考虑做Raid0的设置来提高索引文件的读取性能。 那么我应该使用哪种方法?
这个networking服务已经存在,或者你在做什么或者…? 因为我的答案是根本就没有把它弄晕。 我会得到一个体面的服务器与SSD的最大读取性能。
但是你也必须弄清楚你从“云端”得到了什么。 “云”只允许您在希望在地理上多样化的数据中心中创build多个实例; 即使这样,你也不能保证你的最终用户会得到很好的响应时间(就像亚马逊一样,如果有人在纽约的一个数据中心点击你的服务器,你的客户端在澳大利亚,你如何获得一致的性能?)
你的性能瓶颈在哪里,你如何分解元素来提高性能? 磁盘读取自己将与SSD的照顾。 “云”不会奇迹般地提高performance; 它是应用程序体系结构的一个function。 我没有testing过它,想知道一般的数字,但是当你正在寻找提高的性能时,按需启动各种实例似乎会招致更大的开销,从而导致数据库性能下降。
另外,当你想要看一下caching@#%的时候,你会专注于磁盘。 不pipe你的磁盘性能如何快,你都不会超过一套好的caching服务器来保持内存热点而不是磁盘冷点。 再次,应用程序的体系结构的function。 而这又是另一件可能会伤害你启动更多虚拟机的东西。 虚拟机的虚拟机可以杀死caching,并在caching“启动”之前造成滞后,可以这么说。
注释编号与上面的选项相对应。
我总是build议把数据放在一个单独的EBS卷上,但如果它是只读的,而且在构buildAMI时很容易获得,那么我可能会例外。 我不明白为什么EBS根卷应该比任何其他EBS卷慢。
如果您正确设置AMI,这很容易。 请参阅在ec2-register中设置块设备的选项。 Amazon可以根据快照为您自动创build卷,并将它们附加到新实例,就像它们对根卷一样。
在与该地区相关的端点中,EC2实例和S3之间的stream量不收费。 在EBS卷上有EBS卷和IO的收费。
仅仅是因为从S3快照创build的EBS卷已经准备好用于从S3完整地下载大文件,并不一定意味着EBS速度更快。 卷已准备好立即接受操作,但您将体验高iowait,而从快照填充块。
根据您的应用程序的性能要求,您可能会发现需要“预热”EBS卷,然后才能投入生产。 这与从S3下载它实际上是一样的。 (我很想看看这些选项的一些性能testing。)
这一切都假设在磁盘上获取索引是正确的。 为了获得最佳性能,如果能够承受足够大的实例,可以尝试将其全部加载到内存中。 另一方面,简单地在磁盘上使用带有索引的高内存实例最终可能会使用OS中的标准磁盘缓冲将其加载到内存中。
根据你的索引和访问方式,你也可以看看SimpleDB,RDS和ElastiCache。
如果速度比我build议使用InstanceStore而不是EBS关心的话。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html