非常担心Magento的表现

时间:2013-02-15 15:37:35

标签: php mysql apache magento

我目前有1个magento应用程序运行3个不同的商店:

此商店的数据库大小为370MB。这些商店共享9.000 SKU,并且每个商店都有1k到2k组产品(与SKU相关)。

运行apache AB基准测试工具,我每秒可以获得0.29个请求,即使对于magento商店,我认为这个数字非常低。

最大的担忧是后端。目前有5人通过后端更新和插入新产品,更新/插入一个产品需要4分钟。这是浪费大量时间,我不能为我的生活解释它。

以下是我服务器的资源:

  • 处理器:AMD Athlon X2 3400+(2x 1.8Ghz)
  • 内存:4GB
  • 磁盘:2x 500Gb

我正在使用eAccelerator和Memcahed运行Debian Lenny Apache 2.0,PHP版本5.2.6-1 + lenny16。 (您可以查看所有信息here

以下是Apache,MySQL和PHP的配置文件。

我不是服务器管理员(虽然我负责所​​有的网站和服务器本身),所以这不是我的“海滩”可以这么说。我的问题是,这是应该使用我当前资源的方式,还是我在配置中遗漏了一些重要内容?

我意识到这可能看起来像是在寻找“手持”,但这不是我的意图。我只是厌倦了一遍又一遍地尝试新东西而且我似乎无法让它顺利运行。

7 个答案:

答案 0 :(得分:6)

直截了当的答案是:服务器功能不足。无论您如何配置,您都需要升级到更适合Magento的环境。

CPU Mark Relative to Top 10 Common CPUs

来源:http://www.cpubenchmark.net/cpu.php?cpu=AMD+Athlon+64+X2+Dual+Core+3400%2B

请注意,上面列出的CPU是非常高端的CPU,与AMD双核芯片相比,处理能力约为10倍。 我的笔记本电脑CPU是英特尔酷睿i7 2.2GHz四核基准测试,大约5,000。我建议你从list found here获得5,000以上的CPU。

16GB内存和SSD也似乎合理/合理,因为它现在不花费太多。

答案 1 :(得分:3)

对于像Magento这样的网站,您的缓存大小太低了。我运行一个类似的网站,我们有256mb的缓存。有了16mb,你将不断地进入缓存堆。

您的服务器资源适合您的负载,假设Magento旁边没有其他任何东西在运行。这是一场生猪,但它并没有那么糟糕,4GB的RAM已经绰绰有余了。

我会暂时禁用您的缓存,看看是否有所改善。我还建议您查看Magento中的商店配置,因为您可能没有最佳的缓存配置 - Magento的缓存设置很复杂且不透明。

答案 2 :(得分:3)

我知道这个帖子是古老的网络时间。只是想我添加一些我认为与大多数业主/开发人员最相关的要点。 Magento的表现可能是一个深层次的话题,许多事情都会引起人们的关注,但希望能够理解一些要点将会有很长的路要走:

  1. 您利用缓存的次数越多(操作码缓存,MySQL缓存,整页缓存等)不太重要的硬件 e。这听起来很棒,因为你现在所使用的硬件很遗憾,非常糟糕(正如已经指出的那样)。您可以通过更好地利用缓存来解决这个问题并掩盖性能问题。最重要的是设置整页缓存(谷歌)和操作码缓存。
  2. 虽然缓存有助于加快速度,但是当您点击非缓存页面时,可怜的硬件会非常明显,例如深度过滤的类别页面,搜索页面,购物车,结帐等。基本上任何独特的东西。当访问者点击其中一个页面时,大部分内容都被绕过,然后归结为良好的硬件/配置良好的设置。此时很明显存在性能问题。
  3. 一般来说,更快的CPU(更高的GHz)意味着可以更快地处理包含Magento(大约14,000+)的许多PHP文件。 PHP几乎总是最大的瓶颈。
  4. 由于延迟较低,SSD会有所帮助,但它们确实有助于扩大目录(系统中的产品或订单更多)。在这种情况下,SSD通常会胜过HDD(甚至15k rpm),因为数据分布在驱动器上的较大部分,因此它必须反弹到硬盘上的不同物理位置,以访问各种MySQL表并访问数据。 SSD处理这种"随机搜索"工作得更好。如果您有足够的内存将整个数据库加载到内存中,那么除了在结账时向数据库写入订单或保存购物车的产品数据等时,这并不重要。
  5. 一个常见的误解是更多的CPU内核=更快的网站。这是非常误导的。想象CPU就像一条主要的高速公路。核心就像高速公路上的车道,CPU GHz就像速度限制。你宁愿在50英里每小时20车道或100英里每小时的1车道吗?取决于流量,对吧!您网站上的更多并发访问者意味着更多核心通常会有所帮助。如果您的流量相对较低,那么内核数量会减少,但时钟速度会更高。考虑到像管理区域中工作的Magento cron,indexer和admin这样的东西都会增加负载。如果您还添加了redis,memcache,varnish等缓存程序,那些也会占用高速公路上的一些空间。
  6. 检查CPU或HDD是否过度工作的一种简单方法是检查服务器统计信息。尝试设置类似sar的内容,每10分钟记录一次cpu /磁盘统计信息,供您查看(可以自定义)。您将要查看CPU的%空闲时间。更多的空闲时间=不太努力。可能不需要更多核心。对于磁盘,请检查iowait列(或实时使用iostat)。如果你有一个高iowait,那么更好的磁盘或SSD将有所帮助。
  7. 你拥有的ram越多=你可以缓存更多(以及你可以处理的连接)。一定数量的ram用于来自用户的每个连接(apache / nginx / mysql)和一般系统开销。你拥有的ram越多,你可以在ram中缓存的东西就越快。例如,您可以调整MySQL并将大部分数据存储在内存中,以便更快地查找。这是因为ram不仅具有较低的延迟,而且还需要较少的CPU周期来检索数据。结果是更快的负载(有时只是轻微的)和更低的CPU负载。您可以在内存中存储会话,Magento缓存,整页cahces,MySQL数据和其他项目。所以你需要的金额可能会有所不同,但这是一般的经验法则:数据库的大小应该只占你记忆的25-50%。如果您有1 GB的magento数据库,则应该有大约4 GB的内存。这显然会改变您存储在内存中的更多会话或缓存页面等。
  8. CDN通常不会显着影响用户页面加载,但更重要的是会降低服务器负载。 CDN的主要优势在于其服务器在物理上更接近访问者以下载内容。当考虑更近的服务器可能只能从加载时间缩短50ms时,它不会产生那么大的影响。更重要的是,让CDN处理静态文件的所有请求可能会使您的服务器主要处理动态请求。在某些情况下,这意味着CDN正在处理页面上加载的90-99%资产(图像,css,js等)的加载。在交通尖峰/高负荷下可能很重要。

答案 3 :(得分:2)

我为一家处理超过7个网站的30k +产品的公司进行网页开发,我们通常会尝试避免使用管理员上传/编辑产品。我们使用magmi进行上传和修改。我们对这款产品非常满意。 您使用的是ligtspeed服务器吗?

答案 4 :(得分:1)

如果您正在运行虚拟服务器,可能会考虑使用Nginx作为Apache替代品。我发现这可以带来一些性能提升。另请参阅实现某种缓存。我建议使用Memcached或Redis(如果你可以运行它)。毫无疑问,这将为您带来巨大的性能提升。

Magento是一个数据库密集型系统。根据您网站的繁忙程度,您可以添加更多内存,以确保您有足够的内存来处理正在运行的进程数量。

答案 5 :(得分:0)

Magento需要大量资源。后端结构是一种缓慢且难以优化的东西。但我建议从csv / xml导入所有产品,而不是手工完成。你会找到很多这方面的教程。

为了优化前端,这里有一些提示:

  • 请参阅GTMetrix以了解您的效果指标:http://gtmetrix.com/reports/www.belexpress.eu/k2bPETVr您的主页太大了。首次加载时页面不应超过1MB。你应该使用延迟加载,优化图像等来加快速度。

  • 一些提示可以提供非常好的性能,但是你需要一个更大的服务器,如果你的网站产生流量并且你每月可以获得500美元用于托管,你可以找到非常强大的服务器配置,如6个四核,48GB RAM,SSD磁盘,10GB / s网络,带宽不受限制。

  • 如果您选择更好的托管解决方案(使用功能更强大的服务器),您可以通过将RAM作为最常用的目录来获得性能,例如/ var和/ include / src(如果您使用编译)。只有在你不对代码进行日常更改时才使用编译,如果不这样做,编译+ mount / include / src,因为RAM将为你带来非常好的性能提升。

  • 我不太了解eAccelerator和memcached,personnaly我使用APC,我用Varnish取代了端口80。这为我的网站提供了额外的速度。

让Magento快速奔跑是优化各方面的日常工作,没有任何魔术技巧。

此致

答案 6 :(得分:0)

如果你完成了开发,我会禁用mysql上的慢速查询记录(从my.cnf复制的行):

log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 2

您没有发布.htaccess文件,其中可以覆盖某些php和apache设置。

您是否已将缓存设置添加到/app/etc/local.xml?如果没有,请查看/app/etc/local.xml.additional并应用最适合您的方式。