网站的有些页面加载很慢,点击form提交的时候也常常load半天有时都超时了。
大概的数据量也不大,也就不到1万个node节点,不知道为什么这么慢。
很多页面第一次特别慢,第二次就好了,很奇怪。
请问有什么解决办法吗?
Drupal消耗的资源比较多,你把PHP.ini里面的内存设置,开的大一点。此外,像Entity API ,Commerce这样的模块,非常耗费内存的,要注意。
1. 开启缓存,比如memcache等2. 排除一下有没有需要联网的服务,比如在打开页面的时候要加载某个外部资源、加载GA、ApacheSolr的mlt区块(但是solr没打开),这一点比较重要。3. 就是清空一些不用的数据,比如访问日志等等。4. 就是禁用某些模块,一个一个试,看看那么个模块禁用后,有效果。
如果不是全局都慢,而是某些页面慢,可能某些页面逻辑有问题,可以借助XHProf等工具诊断一下。如果是个别代码引起的性能问题,可以从XHProf日志很容易的看出来。
当然,听你的描述更像是缓存过期引起的,这种情况对Drupal来说不可避免,所以你可以考虑两个方向,一个是清缓存不要全清,只清必要的缓存,另一个方向是在用户访问之前重建缓存,也就是我们常说的Cache Warmer,可以试试这个模块:http://www.drupalproject.org/project/cache_warmer
后来跟朋友讨论,如果你的是Drupal7的话,有可能是因为开启了页面触发cron的机制,使得一些页面缓存持续过期。
按照上面说的,先清除缓存看是不是还慢,如果还慢,那
关闭db log / watch dog 吧.... 鸡肋..
看下 node 表数量 ,这个表是drupal 基础表,关于内容的查询几乎都要走这个表, 而且drupal还是无数个关联查询 不慢才怪了.....
看下 user 表吧, 很多机器人注册的用户,把这个表搞爆了..
开启慢查询日志吧, 观察哪些SQL查询慢 然后想办法优化...
增加MySQL的查询缓存吧 索引缓存....
重新建立MySQL 索引吧...
top 命令看下 机器的负载和进程,看有没有僵尸进程, 特别耗计算的进程在运行,可能也有阻塞进程
netstat 看看你的网络链接 是不是被撑爆了...
你也要看看apache 进程数啊,太大了 你就要排队等待,当然会慢 然后尝试把apache最大客户链接数增大点
最后 哎 增加硬件配置吧 一个小毛驴拖不动10吨煤的 不要太小气...
我的服务器也有这个问题,感觉不是drupal的问题。是服务器的问题,比如Apache或nginx。