2011-09-23 76 views
0

我的网站是非常缓慢,我禁用了大量的模块,所以我认为这是我的托管,首先我把内存上限从90M提高到256M,这有助于“500错误”,但网站仍然非常缓慢。我想这可能是数据库设置,为了方便起见,我正在使用模块“drupal tweaks”进行更改。Drupal网站慢,Drupal的调整

status report screenshot.

+0

您的一个或多个查询中存在问题,使其生成一个** lot **的行(在磁盘或内存中的临时表中)会导致您的悲伤。使用'join'查看所有查询。 – Johan

+0

@Johan:是什么让你得出这个结论? 'Max_join_size'是一个设置,而不是状态。 – BMDan

+0

我知道你说速度慢,不得不加速记忆,所以我认为加入变糟了 – Johan

回答

3

定义“慢”。您的网页是否显示缓慢?如果是这样,加载页面的HTML需要花费一段时间,还是花费大量时间来加载CSS,JS,图像等? Firebug中的“Net”面板可以帮到你,wget

如果页面本身速度很慢,是否在网络,Web服务器,PHP或数据库级别遇到缓慢?网络缓慢很容易诊断;尝试ping。网络或Web服务器可以通过简单的测试显示错误,只需在服务器上的某处放置一个大的静态文件,然后下载它。当您使用devel模块查看页面时,PHP或数据库缓慢时会显示,但在SHOW PROCESSLIST的输出中,数据库缓慢通常也可以看作长时间运行(而不是long-sleep ing!)进程。

或者,试一试NewRelic。它会自动执行其中的几个步骤,并为您提供花哨的图表来引导。

最后:考虑获得一个更好的托管服务提供商,理想的情况是拥有大量的Drupal体验(如BlackMesh或Acquia)。对于一个伟大的主机来说,解决这个问题(如果它首先出现)将是托管服务提供商和客户之间的协作工作,而不是您必须自行解决的问题。花费很多(计费)的时间用于调试托管,然后才能支付比现在更好的托管费用。

+0

速度问题是与drupal后端cms,承诺进行更改。 –

+0

我在本地运行窗口我的站点dev站点是远程托管的,我可以使用NewRelic吗? –

+0

NewRelic在您正在测试的机器上运行,因此如果远程开发机器上出现该行为,那么您将在其中安装它。您在本地运行的操作系统不相关。 – BMDan

2

如果你有一个网站的升级或开发副本,尝试安装Devel module,这对于记录和追加大约每个查询到每个Drupal的页面底部统计的选项。这应该可以帮助您追踪有问题的查询或查询。

+0

你可以在现场使用devel吗? –

+0

这不是'推荐',但我在活网站上做了很多次,它从来没有造成问题(但!):) – Clive

+0

如果你有足够的内存...继续:) –

1

这里有一些你可能会尝试的优化技巧。

  1. 首先有可能你的缓存表应该搞砸了。尝试登录您的phpmyadmin并尝试刷新所有缓存表(不要删除表中的空白表)。

  2. 检查MySql安装文件夹里面的配置文件,如:my-large.ini,my-huge.ini并尝试重命名并将它们复制为bin/my.ini,它们是开箱即用的优化mySQL数据库。

  3. 你从来没有提到你使用的Drupal版本。 Drupal 7在PHP PDO对象的基础上构建了一个全新的数据库API。

这里是一个链接,这将帮助你很多:http://drupal.org/node/310075

而不是写在原始文本中的SQL查询和调用辅助函数来执行查询,您可以创建一个“查询”对象,调用它的方法来添加字段,过滤器,排序和其他查询元素,然后调用查询对象的“execute”方法。

其他

在我的网站PHP内存限制为512MB,215MB但是应该对生产网站是好的。

另外你为什么不启用APC日志?

有时masive脚本可能会减慢你的页面。在Performance中,检查你的选项:聚合CSS和JS文件。

你可能会考虑Drupal的Drupal上的Pressflow。

通过安装加速模块来增强你的网站:http://drupal.org/project/boost

缓存您的浏览

其他先进的技术可能包括:

Cacherouter(即替换默认的Drupal缓存模块)。 使用艾丽西亚克朗减少cron的影响

最终切换到上级主机包或更改您的托管服务提供商

问候......

0

Drupal站点的性能是明显慢,但如果它的慢到极致级别,然后你可以与其他选项,以提高其性能。
1)您可以在服务器上安装memcache模块,在站点缓存方面速度非常快。参考:How to install memcache
2)更改PHP ini设置或mysql conf。
3)检查自定义模块是否存在,因为执行频繁查询会造成死锁。
4)检查mysql表存储引擎&我会推荐InnoDB,它将提供行级锁定。