Amazon AWS微型实例性能 – Apache2和PHP

我已经开始为在Ubuntu上运行Apache2和PHP的队友做一些工作,并且CPU正在发挥作用。 我真正关心的是使用Micro实例是否适合面向生产/公众的网站。 我的直觉是没有,使用标准或高级实例将是一个更好的主意,但我只是开始在AWS中玩,我只是想看看别人做了什么。

现在他确实运行了一些Load Balanced,但他不得不closures实例,我将着手设置Cloudwatch为他自动执行此操作,直到能够更好地处理他的应用程序引擎盖。

我知道这是一个非常模糊的问题,我没有提供很多关于设置的细节,但是我仍然在加快他的网站。

简单的回答:不要打折t1.micro – 它是一个有能力的实例,可以运行一个PHP站点 – 但如果你不能使它与一个t1.micro一起工作,那么得到一个更大的实例(而不是多个t1.micros)。

长答案:t1.micro实例能够生成dynamic内容,并且可以相当顺利地运行多个小型站点。 对于一个优化的设置(让我们说,与cachingWordpress),我会说,t1.micro应该至less处理50K点击/月,如果不是更多。 其中一个关键的想法是,事情已经得到了很好的优化 – 默认的Apache安装会相当快地导致t1.micro失败 – 因为每个请求都会产生一个新的进程 – 所有相关的开销。

另外,t1.micro在默认情况下没有交换空间(设置一个1GB的EBS卷作为交换空间可能是有帮助的 – 更多的是作为一个安全措施而不是实际使用它,如果你发现它被大量使用,那么有些事情需要改变。

如果你要运行多个实例,我build议不要去多个t1.micro实例。 在更大的实例(内存,I / O和CPU)上,每美元的性能要好得多。 关于t1.micro的其他一点是,虽然你可以'爆'额外的CPU,周期也可以'偷'。 如果你走的是t1.micro路由,肯定会用一个32位的实例 – 64位寄存器的额外开销将导致实例耗尽内存更容易,没有任何有形的性能增益。

如果可能的话,我会build议使用php-fpm而不是mod_php – 虽然稍微慢一点,但是它能够承受更高的stream量,而负载较less。 此外,如果可能的话,卸载静态内容的服务。 对于后者,您可以使用CDN(如Cloudfront)(甚至可以使用S3) – 这个想法是这些请求不会占用实例的带宽,磁盘I / O或处理能力(或内存)。 或者,您可以使用轻量级的前端服务器(例如nginx)来处理静态内容,然后将dynamic请求代理回apache(如果您不能完全切换到使用该前端服务器) – 这会增加设置 – 但特别是如果你的网页被caching(即静态版本生成的页面更改时生成)性能增益可以是相当大的。 也可能build议使用前端服务器cachingdynamic内容(持续时间取决于网站的stream行度),以避免不必要的dynamic请求处理。

最后一个build议 – 这可能是不可能的 – 考虑使用Amazon的Linux作为您的操作系统而不是Ubuntu。 我发现它在t1.micro上非常轻便和高效 – 它具有最less的已安装软件包,占用空间非常小。

在t1.micro上运行一个dyanmic网站肯定是可以做的 – 我已经在一个t1.micro上运行了几个小站点(Wordpress / Drupal / Joomla) – 都使用nginx / apache / php-fcgi和varnish / nginx / php包括邮件服务器(postfix),imap(dovecot),数据库(mysql)和ftp服务器(pure-ftp / vsftp) – 性能良好(Wordpress网站加载1-2s),低负载平均通常在0.1以下,每15秒请求一次),以及大约150-200MB的使用过的存储器)。 这不会是我select的性能,但它是一个网站只需要可靠地在线,​​而不需要太多的stream量,成本最低的解决scheme。

我可以说t1.micro是一个非常好的平台,可以帮助您优化您的优化技能 – 它可以让您了解您可以从最低限度获得多less优化,以及优化哪些代价会比其价值更高。 但是,如果您的网站对于单个t1.micro来说太大了,请使用更大的实例,而不要使用额外的t1.micro实例(除非您的特定目的是故障切换 – 但是在这个阶段您可能会使用更大的实例)。 。 不要加载平衡t1.micro实例 – 从这个方法中获得很less – 更大的实例将更好地为您服务。 然而,你一定要找出为什么这些实例正在死亡 – 我打赌这是一个内存问题,在CPU之一。 你一定要尝试启动一个你的网站的副本,并运行ab (或seige等),看看服务器可以站在 – 是否它的应用程序的devise(你可能不能改变)或服务器的设置。

(除非使用专有实例,否则可以相当容易地升级实例types – 只需停止(不终止),然后使用ec2-modify-instance-attribute更改types,然后重新启动)。

t1.micro实例适用于面向公众的网站,只要你没有得到比t1.micro实例能处理更多的stream量。 (前面的句子没有说太多。)

这听起来像你得到更多的stream量比t1.micro可以处理应用程序当前写入的方式,所以你应该升级到一个更大的实例types。

我不认为负载平衡t1.micro是有道理的。 在我看来,负载平衡的最小值是m1.small,即使这样你可能更适合运行一个c1.medium,因为它比获得同等CPU所需的m1.small的数量要便宜。