编辑:我看错了原始帖子。168个模块很多,并且300到700ms的SQL查询非常庞大。您将使用的模块越多,一旦模块执行了一些查询,它们就会越多。
尽可能使用积极的缓存,对所有内容进行缓存,如果还不够,请尝试反向代理缓存。对文件使用CDN可以大大改善整个情况。反向代理缓存还可以通过在访问不需要缓存的页面时删除一些身份验证cookie来帮助您(然后核心将认为用户对此是匿名的,从而最大限度地增加了缓存)。
一旦有太多模块同时交互,Drupal的核心动力就会使整个黎明变得缓慢。
例如,如果您使用很多在hook_node_load()时加载数据的模块而不是使用字段,则它将进行大量查询,而字段的使用将确保缓存效率。
渲染也要花费很多时间,drupal_render()(有时会调用渲染API)是不错的API(确实有用),但是有点慢。切换到PDO(D7)和完整的DBTNG(顺便说一句很棒)也增加了不可忽略的延迟。
就是说,内核本身就非常快(但是即使没有安装任何工具,它也执行太多的SQL查询),编码不良的模块通常是瓶颈。
根据运行的代码,APC可以将执行时间划分为2或3。如果配置正确(启用所有APC优化,则APC官方手册会写得很好,并会为您提供指导)。
如果您的文件系统(网络文件系统或硬盘驱动器)速度较慢,则可能会对执行时间产生明显影响。Drupal由许多小文件组成,这迫使PHP在每次加载FS时在FS上执行I / O(APC对此也有很大帮助)。
错误配置的DBMS也可能是一个很丑的瓶颈,如果您使用MySQL,请考虑进行微调。如果您在共享主机上,如果它不是特定于Drupal的(或尚未准备好的),则DBMS和PHP堆栈可能配置错误或未调整,这可能会导致站点运行缓慢。
不要忘记激活所有缓存。如果您的网站不是面向用户的经过身份验证的网站,请激活激进的页面缓存(这确实很棒)。
如果您不限制其可见性,则拥有的块越多,整页的速度就越慢,Views的模块块将成为曙光瓶颈(取决于您使用的Views插件,OG的块可能是一个真正的难题) (基于每页)或使用自定义PHP代码(任何其他块,也始终手动设置块可见性,可以避免尝试渲染空块,从而极大地帮助了框架)。
避免使用使用hook_init()的模块,即使在页面上运行hook_init(),即使您得到403或404,这也会减慢所有速度(甚至会减慢imagecache | style的生成时间,并且文件上的404错误会只是为了告诉您文件不存在而使曙光缓慢)。