Php Apache Server和SQL Server 2008 Express性能。隔离、方法或建议

Php Apache Server和SQL Server 2008 Express性能。隔离、方法或建议,php,sql-server,performance,apache,debugging,Php,Sql Server,Performance,Apache,Debugging,我想知道是否可以为以下问题提供一些提示或指导 环境类型:小型办公室,约20个用户。 网络:所有服务器、工作站都属于一个子网 基础设施:虚拟化Web服务器和虚拟化数据库服务器 目前,我有一个运行Apache2.2.22(Win32)和PHP5.3.10的web服务器(Win7SP1 x64)。我构建了一些连接到数据库(SQL2k8 Express)的页面并调用了过程,这些过程基本上只是带有连接和条件的基本select语句。返回结果集后,PHP将逐行循环遍历结果集,并在其流经时显示行 有时,结果页面

我想知道是否可以为以下问题提供一些提示或指导

环境类型:小型办公室,约20个用户。 网络:所有服务器、工作站都属于一个子网 基础设施:虚拟化Web服务器和虚拟化数据库服务器

目前,我有一个运行Apache2.2.22(Win32)和PHP5.3.10的web服务器(Win7SP1 x64)。我构建了一些连接到数据库(SQL2k8 Express)的页面并调用了过程,这些过程基本上只是带有连接和条件的基本select语句。返回结果集后,PHP将逐行循环遍历结果集,并在其流经时显示行

有时,结果页面可能需要很长时间才能加载,其中不显示结果集,但web浏览器加载栏/图标会闪烁。有时它只会在加载结束时显示一个空白屏幕,这通常意味着查询连接已超时,有时它将返回结果集。例如,在正常情况下,加载一个页面大约需要1-3秒,而在奇数时间,可能需要20-30秒

我注意到,如果我在SQLSVR Mgmt Studio中运行查询,返回结果集可能需要约5秒的时间,在我的web服务器上加载查询可能需要约15秒的时间

我知道糟糕的PHP编码会导致速度下降,但奇怪的性能行为让我有点困惑,因为我确信我的编码没有那么糟糕

因此,如果人们能提供一些关于我如何诊断或隔离问题的建议,或者建议我可以研究的领域,那将是非常棒的。我知道有Apache日志、SQL SVR日志和性能指标,但我对这一领域还是相当陌生,我真的迷失在我应该采取的方法中

例如,我应该在Apache等中启用任何特定的MOD,或者我应该使用的Apache服务器类型,web服务器中的连接套接字等

我的PHP查询/过程调用示例

$queryStatement = "exec myProc @para1='asd'";
$prepare = $dbConnect->prepare($queryStatement);
$result = $prepare->execute();
WHILE($result = $prepare->fetch(PDO::FETCH_ASSOC)){
set_time_limit(180);
echo $result
}

为大家干杯:)

我建议您阅读一些有关如何解决SQL Server性能故障的书籍。这种方法是一个很好的开始,但是如果你是一个绝对的初学者,它可能有点太抽象了。还有一篇文章,这是一种更实用的方法来识别瓶颈。SQL Server客户咨询团队已经制定了一个可以提供帮助的解决方案。还有很多好书,像or(还有很多)

一些可能导致与您描述的症状相似的原因:

  • 错误的查询计划。有时你会得到一个好的计划,在1-2秒内执行,但有时你会得到一个坏的计划,需要30秒。本节详细讨论了这个问题,调查需要捕获和比较执行计划。然而,症状是问题页面有响应,然后在30秒的加载时间内突然变得无响应,保持一段时间无响应,然后神秘地再次响应
  • 在更新时锁定争用。这意味着您的读取被阻止在等待提交的写入之后。这将导致零星的单次、奇数、无响应页面。但30秒的加载将意味着30秒的写入,这是不可能的
  • 数据库增长事件,特别是日志增长事件。这一个会导致你描述的症状:奇怪的,一次性的,无响应的页面需要30-40秒才能加载。而且,当这种情况发生时,站点上的任何页面都需要30-40秒才能加载,然后它们都会再次响应。这是因为数据库文件(特别是日志文件)必须增长,30-40秒是扩展文件并用零s初始化文件所需的时间。幸运的是,这很容易调查:在性能计数器日志增长中可以看到增长事件:数据库事务日志已扩展的总次数。如果此计数器在数据库中不是零,则可能是罪魁祸首。不幸的是,数据文件的增长并没有被捕捉到,但是它们被捕捉到了(链接的文章展示了如何读取它)。请注意,日志增长还表明您有一个非简单恢复模型集,并且没有发生日志备份,您的日志可能会增长,直到填满整个磁盘。。。易于使用验证

这些只是一些基本的想法,只是略过了你需要看的东西的表面。。。不幸的是,这里没有银弹。

非常感谢您的提示和指导!这无疑给了我一些需要研究的领域。在此之前,我真的不知道或什么可以使用。干杯当然,对于其他人,如果你有其他的评论或建议,请随意。干杯:)