SQL Server Native Client 2012+PHP+IIS-大型查询的性能问题



我目前有两个网站,它们托管在一台具有不同虚拟机的服务器上。每个网站都托管在自己的带有IIS 7.5、PHP Fast CGI 5.3的虚拟机上,该虚拟机连接到带有SQL Server Native Client 2012的MS SQL Server 2012 DBMS。SQL Server 2012驻留在一个单独的专用虚拟机上,该虚拟机托管与两个网站相关的数据库,因为一些数据在网站之间共享。

安装程序基于Windows,因为我们很少有.NET服务需要在虚拟机上运行,而且我们在网站上使用单独的虚拟机,主要用于隔离和安全。

该服务器具有Intel Xeon 2.4Ghz 6 Core处理器X 2,带有32 GB RAM和10K RPM SAS,作为承载数据库的主存储,虚拟机托管在另一个7.2K RPM SAS上。就性能而言,网站的平均负载非常快。

我们的网站有一个后端登录,我们经常在那里执行大型查询,以检查日志和其他与网站及其运营有关的内容。一个查询平均需要大约一分钟才能完成,因为它是针对一个非常大的记录集执行的。每当执行查询时,主机上的网站就会变得非常缓慢。

我们已经做了一些测试来缩小问题是SQL Server还是Web服务器。首先,我们直接在数据库服务器上执行了一些批处理查询,在查看网站时,我们没有发现任何性能问题,这清楚地表明SQL server没有瓶颈。接下来,我们想看看这个问题是由Web服务器、PHP还是SQL Server Native Client引起的。我们在服务器上托管了一个HTML测试文件,当我们执行批处理查询时,我们试图访问该文件,结果它同样快。当从网站后端执行批处理查询时,一个带有小排序算法的普通php文件运行得很好。然而,当我们实际使用一个小查询测试数据库连接时,在运行查询时加载需要一些时间。这清楚地表明PHP SQL Server驱动程序中存在瓶颈。

我知道PHP在MSSQL服务器上不太好,但由于开发限制,我现在需要坚持使用MSSQL。当一个大型查询正在进行时,我不知道是什么导致SQL Server Native Client的速度减慢。我已经阅读了一些内容,并尝试使用ConnectionPoolingMultipleActiveResultSets,但在当前场景中没有任何改进。网站变得非常慢,每个连接到数据库的页面需要20秒,而如果后端没有任何查询,它只需一两秒钟就可以加载。

这似乎仅限于特定的主机。当我在网站1上运行大量查询时,网站1上的其他页面速度非常慢,而网站2根本没有显示任何性能问题。已尝试检查Web主机和数据库服务器上的CPU使用情况。他们只增加了5-10%,我认为这可能不是造成如此严重的性能问题的原因。

我在想,SQL Server Native Client 2012可能有一个错误导致了这种情况,或者我错过了任何设置或案例吗?

提前谢谢。

首先停止更改随机设置(如启用MARS),希望它能有所改进。应用一种方法:测量、识别瓶颈并修复这些瓶颈。我建议您阅读Waits and Queues论文,它被一次又一次地证明是一种出色的性能故障排除方法。请参阅性能故障排除图表。然后,您将能够正确地识别根本原因(/cough争用)并适当地解决它。

最新更新