我正在帮助安装了Drupal 6的人,他们对网站的性能非常不满,即使他们只是在定义内容类型的阶段。只需加载模块列表可能需要30秒以上,导入内容类型大约需要3分钟。
这是安装在一个大型共享UNIX系统上,我在同一台服务器上运行其他D6安装,没有任何实际问题(有些慢,但没有什么不好)。我今天下午花了一些时间来禁用网站上的所有非核心模块,并且能够将模块列表页面的加载时间缩短到大约5秒。当我重新启用模块组时,似乎遭受最大性能影响的是CCK系列模块(模块列表的页面加载时间增加了15-20秒)。
同样,我在这台服务器上还有其他网站运行CCK(以及大多数相同的其他模块)并没有遇到类似这样的事情。主要区别在于这个非常慢的网站有大量的内容类型和CCK字段定义 - 46种不同的内容类型和162个CCK字段。
我得出的结论是,网站性能(至少在某些与创建和编辑内容类型有关的操作)与内容类型和自定义字段数量之间存在直接联系,但我无法确切地确定此内容类型和字段的影响,以及您是否可以采取任何措施来减轻其影响。
我确实安装了Devel模块,发现模块页面上最大的性能消耗在与cache_menu有关的查询中,但我不确定它是否直接链接到内容类型的数量和/或字段。
感谢任何指导!
谢谢, 保罗
答案 0 :(得分:1)
首先:模块页面确实是一个邪恶的野兽,因为它完全刷新所有Drupal的内部缓存并重建它们以确保新安装的模块具有最新数据。它不是网站性能的良好预测器(因为通常只有特定的管理任务会刷新这些类型的缓存),尽管这很烦人。
第二:导入内容类型也会刷新这些缓存,因为CCK希望确保所有内容都是最新的。这是次优的,但你有它。
最后:您拥有的CCK字段和内容类型的数量会影响刷新和重建缓存时完成的工作量。 CCK提取有关所有已定义内容类型及其字段的所有信息,构建数据结构以对其进行描述,并使用该缓存版本供以后参考。有数百个字段和数十种内容类型,重建数据缓存需要更长时间,这会加剧您在模块页面上以及导入新内容类型时出现的延迟。
好消息(例如它)是这个特定问题对网站的整体性能没有太大影响,只是冲洗这些缓存的管理操作。
答案 1 :(得分:0)
这是我在另一个Drupal问题上做出的回答;如果伊顿的答案没有解决你的问题,也许你应该看看视图模块和动态菜单重建。 每次,菜单都会重建,导致100或甚至1000的查询。 根据连接的方式,最终可能会在同一个表上使用两个类似的连接,从而使查询数量增加一倍。 可以找到更多信息here