我有一个运行在微型实例上的MVC v1(.NET)应用程序的客户端。 在这个实例中,我运行了.NET,IIS 7.5和MS SQL Server 2008来处理应用程序。 客户报告说,处理每个请求需要将近10秒。 即使加载初始login页面需要很长的时间,然后login需要那么长时间等等
当前正在运行的实例规格如下所示:
内存是否有问题? 还是处理能力?
我预先两个选项:
哪一个会给应用程序更好的性能?
提前致谢。
在这个实例上运行所有这些肯定会导致一些问题。 一个“小”与“二微”的实例是否会更好地工作,是一个成本效益问题。
要找出你的瓶颈是什么,你应该能够从控制面板 – >pipe理工具 – >性能监视器启动性能监视器,看看哪些资源被封锁 – 很可能是内存。
如果我能记得的话,那么这个“小”的实例就不会成本效益,除非你想要超过三个全职的微型实例。
我不会期望IO,因为微型实例只在EBS上运行,而EBS是快速的。 据说实例存储比EBS慢。 但是按照另一个答案的build议检查性能计数器。
我真的会期待RAM,因为615 MB对于64位系统来说并不多。 此外,如果你的机器开始交换,你将被收取额外的EBS请求,这使得它在经济上更糟糕。
最后记得微型实例具有突发性的CPU,它可以在非常短的爆发中实现2个ECU,而平均以更低的速度执行。 我看到一些基准指出,从长远来看,微型实例的速度只有标准的一半。 但我期望它强烈依赖于它有多繁忙的邻居服务器。
那么对于“哪一个会给应用程序提供更好的性能? 我认为没有明确的答案,它将始终是特定于应用程序的 – 请检查它。 尝试两个选项,然后决定。 随着实例每小时收费这样的testing不会花费你很多。
你没有提到任何有关IO子系统的东西,这可能没有帮助,但从你说的话我build议这是一个内存问题,因为615MB是低于该软件堆栈的最低build议的内存要求。 您应该能够从最基本的任务pipe理器统计中看到这一点。 解决这个问题,然后看IO,因为它们在低端VPS / VM实例上通常也很差。
优化您的查询以尽可能less地使用磁盘。 数据库在很大程度上受磁盘访问和caching的控制。 通过尽可能多地调整您的查询,包括添加索引和规范化数据库,您将减less您的资源命中。
人们忘记了这些机器正在虚拟化环境中运行。 虚拟机和物理磁盘之间有一个代理。 这个经纪人在这里增加一微秒的机会越less,微秒就越好。 完全有可能您的应用程序可以在物理主机上运行得非常好,但只要将其移至此虚拟化模型,就会遇到性能问题。 主机混杂使用的效率掩盖了应用程序devise和查询devise中的任何低效率。 在转移到虚拟模型(特别是整个数据库系统被虚拟化的虚拟模型)时,发现这些低效率经常发生。
您将从查询优化和数据库规范化中获得一些经济上的好处。 AWS是一个实用的计算环境。 您为每次访问资源付费。 您需要更换磁盘的次数越less,每个月和每月都会节省更多的金钱。
如果数据库无法修改/规范化或添加了索引,我还会考虑为您的SQL Server实例托pipe物理服务器。 这将修复您的数据库实例的成本模型并提高性能,因为现在您将有权访问您的数据库的一个专用主机。 您可能需要为AWS和物理托pipe提供商之间的数据库支付字节input/输出。 您可能还有提供虚拟和物理托pipe的供应商的其他选项,例如Rackspace,在这种情况下,您将无法获得提供商云中input/输出的字节数。