Dav*_*ild 8 php performance nginx magento apache-2.2
我有一对服务器托管一个流量适中的 Magento 电子商务网站(谷歌分析报告每天 60k 页面浏览量,我认为服务器本身报告了大约 80k)。数据库服务器运行平稳快速,除了偶尔偶尔打嗝外,但 apache 服务器经常发生故障。
我已将 magento 设置为使用推荐的 PHP 缓存 (APC),并将其自己的缓存文件保存在 1.5 gig tmpfs 中(此 tmpfs 经常变得非常满,我有一个脚本运行以在 tmpfs 为超过 80% 已满)。我提供来自亚马逊云前沿的大多数图像。我最近将 nginx 设置为 apache 的反向代理(nginx 也提供静态文件)。我已经尽我所能配置了 apache - keepalives 和 hostnamelookups 都关闭了,prefork 配置如下:
<IfModule prefork.c>
StartServers 50
MinSpareServers 50
MaxSpareServers 100
ServerLimit 512
MaxClients 256
MaxRequestsPerChild 400
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我没有关闭 .htaccess 文件,并且访问日志是打开的。我知道有些模块我可以关闭。我不确定这三个变化中的任何一个会产生什么影响,如果有的话。
apache 服务器是一个 VPS,有 6 gig 的 RAM。截至撰写本文时,服务器正在报告load average: 17.77, 18.27, 49.76,但大约有 2 gig 的可用 RAM。当它变得非常糟糕时,负载会增加到 120+ 并保持在那里 - 重新启动 apache 会使站点重新启动并重新降低负载。
vmstat是(当服务器报告上面的负载时),我认为,显示 CPU 空闲值在 0 和 70 左右之间波动。iostat显示 iowait 值介于 0 和 0.2% 之间。
我有点卡住了。我所知道的一点点告诉我,问题是由于正在运行的代码和用户数量的组合导致 CPU 过载。但我没有足够的经验来确定这就是问题所在。如果这是问题所在,我认为解决方案是改进代码或使用负载平衡器将站点托管在两个 VPS 上。
所以,我想我的问题是:
编辑:
我发现了一些奇怪的东西 - /var/spool/mail/root 很大...... 38 gig。这听起来……不健康。这可能是问题吗?
正如您所注意到的,Magento 和 Zend Framework 非常占用 CPU 资源。避免 CPU 负载的最佳方法就是只渲染任何内容一次,直到它发生变化。目录的大多数部分不会经常更改,通常只有页面上的购物车块或“最受欢迎的商品”块是唯一的动态部分。
我建议在 Apache 前面放置一个Varnish缓存。这为您提供了高性能页面缓存,可以显着减轻 LAMP 堆栈的负担。最近,由于 Varnish,我们在一次非常公开的网站发布中幸存了下来,它的速度和低 CPU 负载给我留下了深刻的印象。Varnish 是免费的,并且足够灵活,可以缓存整个页面,或者仅缓存相对静态的部分并动态包含购物车。
然而,Varnish 不会在默认的 Magento 安装上缓存太多内容,因为有很多每个用户的动态内容、cookie 等。Magento 模块(例如“由 Varnish 提供支持的 PageCache ”)修改了 Magento,使其能够与 Varnish 很好地配合。它还提供了一个与 Magento 设置相匹配的 Varnish 配置文件。这两者共同构成了非常有效的设置。它是一个商业模块,但比功能更强大的服务器便宜得多。
卸载到 CDN 或 Nginx 的部分并不是真正的问题,尽管它确实有帮助。即使 Apache 也可以处理相当多的静态请求。您需要缓存需要花费精力一次又一次生成的内容,即动态部分。
| 归档时间: |
|
| 查看次数: |
3173 次 |
| 最近记录: |