我已经在 Amazon EC2 上运行了一个非常小的 wordpress 网站大约 2 个月了,使用免费层的微型实例。
我每个月都会因为超出磁盘 I/O 限额而被收取几美元的费用。
我研究了如何减少磁盘 I/O,并做了一些更改,例如通过更改 apache.conf 允许浏览器缓存图像、最小化图像和插件等。
然后我将 APC 模块添加到 PHP。我期望这能大大减少 I/O,但似乎没有什么效果。
APC 状态(apc.php):
http://oi41.tinypic.com/30t5gud.jpg
单个网页加载过程中的 vmstat 输出:
似乎在网页加载过程中发生了 I/O 操作。我不明白为什么,因为 PHP 应该在 APC 缓存中,而图像已缓存在我的浏览器中。
我的目标只是减少 I/O,从而降低成本。我能做些什么来实现这一目标?例如,APC 设置是否不正确,或者是否有其他技术可以避免 I/O?
(PS:W3TC wordpress 插件对我来说不起作用。我可能没有正确安装它 - 它把我锁定在网站之外,导致 CPU 超载并导致网站瘫痪。)
答案1
我们可以看到您的实例内存非常低,并且实际上正在进行交换。这是您需要付费的磁盘 I/O,并且还会导致您的网站运行速度变慢。
通过停止不必要的进程并调整你的 Web 服务器以运行更少的进程(例如 Apache 或 php-fpm)来释放一些内存。
答案2
一些东西...
尝试使用 Wordpress 的 batcache 之类的东西,因为它只缓存经常访问的页面,从而减少了预先缓存所有内容的开销
如果可用内存很少,我建议将 HTTP 服务器切换到 NGINX。它非常高效。
检查 MySQL 的资源利用率。99% 的情况下,它的配置过于宽松,占用了所有可用的服务器内存。