15

我目前有 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。(你可以在这里查看所有信息)

这是我的 Apache、MySQL 和 PHP 配置文件。

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

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

4

7 回答 7

6

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

相对于前 10 种常见 CPU 的 CPU 标记

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

不过请注意,上面列出的 CPU 是非常高端的 CPU,其处理能力是 AMD 双核芯片的 10 倍。我的笔记本电脑 CPU 是 Intel Core i7 2.2GHz 四核基准测试,大约 5,000。我建议您从此处找到的列表中选择 5,000 以上的 CPU 。

16GB RAM 和 SSD 似乎也很明智/合理,因为这些天它的成本并不高。

于 2013-02-25T02:35:07.340 回答
3

对于像 Magento 这样的网站,您的缓存大小太低了。我运行一个类似的站点,我们有 256mb 的缓存。使用 16mb,您将不断遇到缓存转储。

您的服务器资源可以满足您的负载,假设 Magento 旁边没有其他任何大型运行。这是一头猪,但它并没有那么糟糕,4gb 的 RAM 绰绰有余。

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

于 2013-02-15T19:22:15.223 回答
3

我知道这个线程是古老的互联网时代。只是想我会添加一些我认为与大多数所有者/开发人员最相关的观点。Magento 性能可能是一个很深的话题,需要考虑很多事情,但希望理解一些要点会有很长的路要走:

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

我为一家在 7 个站点上处理超过 30k 种产品的公司进行 Web 开发,我们通常会尽量避免使用管理员来上传/编辑产品。我们使用magmi进行上传和编辑。我们对这款产品非常满意。您使用的是 ligtspeed 服务器吗?

于 2013-02-19T18:35:06.007 回答
1

如果您正在运行虚拟服务器,可能会考虑使用 Nginx 作为 Apache 替代品。我发现这可以提高性能。还要考虑实现某种缓存。我会推荐使用 Memcached 或 Redis(如果你可以让它运行的话)。这无疑会给您带来巨大的性能提升。

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

于 2013-02-22T17:26:47.530 回答
0

Magento 需要大量资源。后端结构是一种缓慢且难以优化的东西。但我建议从 csv/xml 导入所有产品,而不是手动操作。你会发现很多关于这个的教程。

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

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

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

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

  • 我不太了解 eAccelerator 和 memcached,我个人使用 APC,并用 Varnish 替换了端口 80。这为我的网站提供了额外的速度。

让 Magento 快速运行是一项优化各个方面的日常工作,没有魔术。

问候,

于 2013-02-15T18:27:11.957 回答
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 并应用最适合您的内容。

于 2013-02-21T19:18:25.543 回答