2

我有一个 Drupal 应用程序,它有一个非常大的记录集,将近一百万个节点 (475,181)。即使是简单的连接也变得过于耗时(3-10 秒),而且我们越来越依赖 Memcached。我想知道是否有人使用过 Facebook 在 Drupal 中使用的相同技术。

4

3 回答 3

1

回答您的问题:目前还没有,但是在 HipHop 和一个名为 MongoDB 的 nosql 数据库上正在进行大量工作。更多关于以下内容。

正如其他人所提到的,我首先要绝对确保您的数据库表已正确优化、索引以及您的数据库有足够的资源。如果您的数据库在 500k 行以下阻塞,则很可能出现问题。(我们有超过 15 万个节点,我们的 node_revisions 表中有大约 60 万行,因为节点在我们的一些 cck 表中有超过一百万行的多个图像。)我不是 MySQL 专家,并且能够使数据库查询时间低于我们的大多数查询需要一百毫秒。)这是我在研究切换到不同的数据库引擎之前将采取的步骤。(从最简单到最难)

  1. 寻找需要索引的地方。最有可能的地方是具有 nid、vid 的表,或者存在大量使用 where 中的字段值的查询以及连接中的任何列的地方。这是我获得 80% 改进的地方。添加过多的索引会减慢插入和删除的速度,但它们的添加和删除非常简单。
  2. 考虑切换到 INNODB,它几乎总是比标准的 drupal 6 myisam 快。这是一个超级简单的改变。
  3. 确认您的 my.cnf 设置正确。如果你没有改变它,它可能是错误的。大多数 MySQL 发行版附带的设置非常、非常保守,并且可能不适合您的环境。
  4. 添加 RAM,如果您已切换到 INNODB,则添加 RAM 可以对您的性能产​​生巨大影响,即使 MySQL 不喜欢 RAM。
  5. 如果可以的话,切换到pressflow。它修复了许多减慢常规 drupal 的问题。
  6. 如果您仍然遇到问题,请远离 CCK 并创建自己的内容类型。
  7. 查看并优化您的视图查询。视图效率不是很高,有时您可以通过修改查询取得很大进展。

是一篇很棒的文章,介绍了使用 drupal 和 1 个单一服务器可以实现多少。

如果这些都不起作用,这里有一些关于人们正在使用的较新的高级技术的链接。最有前途的是 MongoDB,如果你有开发资源在项目中使用它,我羡慕你。(对于我们这家小店来说,它还是有点新的和未经打磨的,但我迫不及待地想咬牙切齿。)

德鲁巴和嘻哈

drupal and Mongodb - there is also a great talk in the sessions from drupalcon SF (last year)

于 2011-03-07T22:45:26.963 回答
0

您确实意识到 HipHop 和 Tornado 不是数据库软件,对吧?

但是,数据库几乎就像 CMS 的核心,因此当您必须将其更改为另一个系统(实际上甚至更多,SQL 到 NoSQL)时,您应该考虑构建一个新的 / 使用另一个 CMS 而不是编辑 Drupal-核。

于 2011-03-07T15:06:57.123 回答
0

我在该主题上没有经验,但https://drupal.stackexchange.com/questions/183/real-world-experience-in-scaling-and-tuning-performance肯定看起来充满了有用的信息。

于 2011-03-07T20:09:19.997 回答