【问题标题】:Amazon EC2 Bitnami Wordpress Extremely SlowAmazon EC2 Bitnami Wordpress 极慢
【发布时间】:2012-07-03 09:39:37
【问题描述】:

我在小型实例上遇到了 Amazon EC2 和 Bitnami Wordpress AMI (RedHat) 的几个问题。老实说,我不知道该问谁 :) 我不是 SysAdmin/Linux 专家,但我已经学习了基本的 SSH 命令和其他基本知识。

这就是正在发生的事情:

Wordpress 网站加载速度极慢 - PageSpeed 和 YSlow 得分为 27 分(满分 100 分)。 我认为这是由 php.ini 中的 memory_limit 引起的。当我安装 Bitnami Wordpress AMI、导入 WP 用户、设置主题和其他基本内容时,我什至无法访问 wordpress 网站——只是出现了一个空白页面。经过几个解决方案后,我尝试将 php.ini memory_limit 从 32M 增加到 128M(最大)。而且我已将 WP 内存限制增加到 64M。

网站加载正确,用户可以访问它 - 但速度极慢。 当我尝试将 php.ini 内存限制降低到 64M 时,网站再次显示空白页面。

我目前唯一能想到的是将 EC2 实例从 .small 增加到 .large 或类似的。请让我知道您对这个问题的看法。非常感谢!

【问题讨论】:

  • 一位好友在 Web 服务器和数据库服务器之间出现 500 毫秒的延迟时从 EC2 切换。您是否看到类似的延迟?
  • EC2 中的 IO 可能非常慢。这可以杀死 MySQL(我假设那是你的存储?)。确保您还为 MySQL 分配了足够的内存。如果您还没有,请使用 EBS 支持的实例并将数据(而不是操作系统)存储在软件 RAID 分区(例如 8 个条带化 EBS 实例)上。见stackoverflow.com/questions/3630506/…
  • @EricJ。我不认为对 EBS 卷进行条带化会带来很好的性能改进。 EBS 使用网络 IO,因此即使您在 8 个 EBS 卷上进行条带化,您仍然有一个网络接口,所有流量都必须通过该接口。 RAID 条带化有助于克服作为瓶颈的磁盘速度,但当网络成为 EBS 的瓶颈时,它就无济于事了。
  • @user1087981:你错了 :-) 您将看到在大型实例上最多 8 个 EBS 卷的近线性性能提升(由于能力较弱,在较小实例上可能最多约 4 个网卡)。我个人对 8 卷进行了基准测试。
  • @user1087981:另见hightechinthehub.com/2012/02/…

标签: wordpress amazon-ec2 amazon bitnami


【解决方案1】:

我们在将 Php/MYSQL 应用程序转移到连接到 RDS 数据库实例的 EC2 实例时遇到了类似的问题。尽管所有规格都相同,即 CPU 数量、RAM、时钟速度和 Php/Apache 的版本都相同,但页面加载时间比我们之前的服务器长 10 倍。

终于找到问题的原因了,RDS数据库的Cache query size默认设置为0,导致数据库运行异常缓慢。我们将 query_cache_size 更改为 1000000000 (1G)(因为 RDS 实例有 4G 的 RAM)并且应用程序性能立即与我们之前的(非 AWS)一样好服务器。

其次,我们发现在服务器上本地安装 MySQL 的 EC2 服务器在 Amazon Linux 构建上表现不佳。我们在运行 Ubuntu 的 EC2 实例上尝试了相同的操作,并且使用本地 MySQL 数据库时性能非常好。

显然,出于可扩展性的原因,我们使用 RDS 实例,但我们发现将 MySQL 数据库移动到 EC2 实例上从根本上提高了 Ubuntu linux EC2 服务器的性能,但与 Linux 的 Amazon Build 没有区别,这很有趣。

【讨论】:

    【解决方案2】:

    我们看到了类似的东西。对我们来说,摆弄优化设置的机会成本远高于仅仅使用专门的 Wordpress 托管服务提供商。

    这个领域(专用的 Wordpress 托管)的领导者似乎是 WP-Engine 和其他一些,如 Synthesis

    http://trends.builtwith.com/hosting/wordpress-hosting

    我在dreamhost上有我的个人网站,但这些年来它们变得越来越糟糕,所以我搬到了bluehost,这没问题。

    总的来说,我认为 EC2 很棒,但它需要大量的摆弄。根据您的时间成本和专业领域,您可能会选择切换到更专业的提供商。

    除了我在 Dreamhost 和 bluehost 担任个人共享托管客户的个人经历外,我与这些公司中的任何一家都没有任何关系。

    【讨论】:

      【解决方案3】:

      我建议使用缓存工具。您可以尝试的第一个是 APC(替代 PHP 缓存)。在 Red Hat 中很容易安装:yum install php-pecl-apc。使用 WordPress 特定缓存插件(如 W3 Total Cache 或 Super Cache)可以获得更好的结果。我使用最后一个,它很容易安装在 WordPress 应用程序中:

      1. 从 WordPress 管理面板安装 Super Cache
      2. 更改 .htaccess 权限:sudo chmod 666 /opt/bitnami/apps/wordpress/htdocs/.htaccess
      3. 启用插件并按照配置步骤操作。你可以看到这个插件是如何修改 .htaccess 文件的
      4. 根据您的喜好配置缓存选项并进行测试。您可以使用 blitz.io 等服务进行性能测试
      5. 一切正常后,将 .htaccess 权限更改为 600。

      希望对你有帮助。

      【讨论】:

        【解决方案4】:

        由于您还没有收到答案,请允许我将我的 cmets 总结为一些希望有用的东西:

        您可以影响的一些领域是:

        • PHP 需要 RAM,但您的数据库也需要(我对 Bitnami 一无所知,但 Wordpress 使用 SQL 数据库进行存储)。
        • 为 PHP 分配足够的 RAM。似乎介于 64MB 和 128MB 之间。
        • 如果您使用的是 MySQL,请编辑 my.ini。如果您使用 MySQL 的默认配置文件,则内存分配参数调得太低方式。如果您发布您的 my.ini 文件,我可以提供建议(或者如果您使用不同的数据库,请说明是哪个)。
        • 为您的数据分区考虑 striping multiple EBS volumes
        • 如果您还没有,请使用EBS backed instance

        如果您手头有分析结果,您可以就调整位置做出更明智的决定。

        【讨论】:

        • 非常感谢您的有用建议。我肯定会尝试分析应用程序并回到这里。不知道这是如何完成的......我会四处搜索。 #Point 3 我找不到my.ini文件,只有my.cnf 这里是'my.cnf'文件: [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user =mysql # 建议禁用符号链接以防止各种安全风险 symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid 就是这样.没有提及任何类型的记忆或类似的:(
        • #Points 1 & 2 是的,我正在使用 MySQL。当前设置的 memory_limit 为 128M。 #Point 4 做到了,不幸的是没有任何改变。顺便说一句,目前我只有一个实例。 #Point 5 是的,我正在使用 EBS 支持的实例。不确定如果实例崩溃或出现问题我能做什么。我知道 EBS 是 EC2 的最佳备份解决方案,但我会四处寻找如何在实践中使用它。
        • 某些版本的 MySQL 使用 my.cnf 而不是 my.ini。在 Linux 上,有时会在子文件夹中覆盖 my.cnf。请参阅此处的 MySQL 配置文件主题 dev.mysql.com/doc/refman/5.1/en/option-files.html
        猜你喜欢
        • 2014-04-13
        • 1970-01-01
        • 2018-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-07
        • 1970-01-01
        相关资源
        最近更新 更多