Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 页面加载时间始终不一致_Php_Performance_Drupal 7_Page Load Time - Fatal编程技术网

Php 页面加载时间始终不一致

Php 页面加载时间始终不一致,php,performance,drupal-7,page-load-time,Php,Performance,Drupal 7,Page Load Time,tl;dr:用户执行某些操作后Drupal页面执行时间不一致(可能与DB写入有关) 我们有一个复杂的Drupal站点,运行在相当标准的LAMP VPS设置上。除此之外,我们正在使用规则来提供大量自定义功能,以及用户关系、有机组和自定义模块。PHP在Apache(mod_PHP)下运行,并且启用了MemCache和APC(尽管在第一次注意到这个问题时APC没有启用) 问题是:在经历了不一致的页面加载时间(有时良好-200毫秒,有时勉强可以接受-4000毫秒,有时极不可接受-20000毫秒)之后,我

tl;dr:用户执行某些操作后Drupal页面执行时间不一致(可能与DB写入有关)

我们有一个复杂的Drupal站点,运行在相当标准的LAMP VPS设置上。除此之外,我们正在使用规则来提供大量自定义功能,以及用户关系、有机组和自定义模块。PHP在Apache(mod_PHP)下运行,并且启用了MemCache和APC(尽管在第一次注意到这个问题时APC没有启用)

问题是:在经历了不一致的页面加载时间(有时良好-200毫秒,有时勉强可以接受-4000毫秒,有时极不可接受-20000毫秒)之后,我们编写了一个计时器,在页面上显示定制的PHP执行时间。我们所看到的时代都是可以接受的;无论是在非常简单的页面上,还是在由于用户在上一页上的操作而发生大量后端处理的页面上。然而,间歇性的页面加载问题仍然存在——系统有时需要15秒来提供页面(到第一个字节的时间),尽管处理显然是在这段时间的一小部分时间内完成的

事实上,我们可以看到Drupal正在以其他方式快速处理代码;例如,一封电子邮件(由规则触发)会在触发规则的用户看到确认页面前十秒或更长时间到达收件箱!类似地,当规则操作或用户关系导致用户对象的自定义字段发生更改时,管理员可以在用户的浏览器仍在等待数据时看到该更改

我们能够始终如一地预测这些长页面加载时间何时会发生:

  • 仅在用户执行单独的特定操作后,例如确认新“朋友”(通过用户关系)、执行仅对组成员可用的操作(通过规则/有机组)或导致我们的自定义模块之一对用户对象执行操作的操作。常规站点导航显示正常

  • 无论涉及的模块数量或组合(规则和/或OG和/或UR和/或自定义模块)

  • 不管要加载的页面是什么,加载时间长的页面可能是一个非常简单的静态页面(“您已成功完成X”),也可能是一个复杂的结构,例如用户的所有朋友及其详细信息的列表

我们可以初步得出以下结论:

  • PHP/Drupal处理速度不是问题(我们知道所有处理都很快得到了解决)

  • 常规服务器调优没有故障(否则所有页面加载可能会缓慢)

  • 页面复杂性不是一个重要因素

  • 互联网连接速度不是一个重要因素

  • 没有特定的单个或明显的模块组合出现故障

  • 有一些我们没有考虑的因素,或者我们对确定确切原因了解不够

我们认为这可能是缓存问题,但请注意,只有当用户的操作导致数据库写入时,才会发生这种情况。。。这个场景听上去熟悉吗?

如果可能的话,在您的Web服务器上安装,并监视日志。看看是否可以将其固定到特定的函数,以确认您对SQL的怀疑

尝试在另一台计算机上复制此问题

听起来好像是你的副总裁的问题。联系他们,让他们将您移动到其他群集或调查问题。

启用慢速日志(如果使用mysql)

(重新启动数据库)

如果是数据库相关的,这应该给你一些线索


还要检查它是否占用了太多内存并开始交换(使用htop进行交换)。

我以前遇到过这个问题(但不是在Drupal站点上),结果发现硬盘几乎没有空间了。至少值得一查当你做同样的操作2次时会发生什么?第二次快吗?重新硬盘:不,不是这样,我们在VPS上,有很多可用空间。重新重复操作。这似乎并不总是一个因素;导致发送邮件和电子邮件的类似操作不会减少重复时间。我们设置连接、删除连接然后设置完全相同的连接的操作也不会减少时间。这是有例外的;(1) 用户A添加用户B(脚本RT 6秒vbad,页面重新加载20秒)。(2) 删除连接。(3) 用户A添加用户B(脚本RT 0.18秒vgood,页面重新加载15秒)。(4) 用户A添加了用户C(脚本RT 0.17秒vgood,页面重新加载15秒)。MySQL非常快,从提供查询时间的devel模块和确认快速MySQL行为的性能模块来看,我们缺乏必要的许可。关于如何打开/关闭以查看具体信息的任何建议。您主要希望。这将显示每个函数调用完成所需的时间。您特别希望寻找需要很长时间的函数调用,从中可以看到发生了什么,并研究其他方法。正如您所知,当您记录日志时,性能将下降。祝你好运我们已经解决了这个问题,但没有找到确切的原因。一组措施,如改进APC和其他缓存。
log_slow_queries=/var/log/mysql/slow-query.log
long_query_time=10
log_queries_not_using_indexes=YES