我们的Web应用在高峰时间出现了性能问题,目前被分成一个2003 IIS6 Web服务器和一个SQL Server 2005 DB服务器。DB服务器上的查询时间看起来很好(约30ms),CPU很低(低于20%),但是在Web服务器上执行查询可能需要很长时间(超过1秒)。
我在perfmon中寻找线索,发现平均网络IO等待时间约为400ms,这可能很好地解释了性能差异。我还在SSMS中运行了一些查询,发现每秒大约有10,000毫秒的累计ASYNC_NETWORK_IO Wait Types。
从一些研究中得知,问题要么是网络容量不足,要么是Web服务器无法快速处理结果。我该如何调查它是哪个问题,然后解决它呢?
我们使用NHibernate作为数据层,据我所知没有使用DataReaders。没有已知的返回大结果集的查询,尽管有一个包含压缩XML文档的列的表。
先感谢您的帮助。
附加请求信息:
- Sql Server设置为使用TCP/IP和共享内存协议 - 我们每页进行约4个DB请求,不算太多 - 在高峰时段,DB服务器发送1.5MB / sec - 在高峰时期,Web服务器CPU约为60% - 在高峰时期,Web服务器NIC负载为13MB / sec。 8MB正在发送,5MB正在接收。 同一NIC处理SQL和HTTP流量 - 我们确实使用了一些缓存,但是应用程序相当动态,因此大部分时间都需要最新数据
我在perfmon中寻找线索,发现平均网络IO等待时间约为400ms,这可能很好地解释了性能差异。我还在SSMS中运行了一些查询,发现每秒大约有10,000毫秒的累计ASYNC_NETWORK_IO Wait Types。
从一些研究中得知,问题要么是网络容量不足,要么是Web服务器无法快速处理结果。我该如何调查它是哪个问题,然后解决它呢?
我们使用NHibernate作为数据层,据我所知没有使用DataReaders。没有已知的返回大结果集的查询,尽管有一个包含压缩XML文档的列的表。
先感谢您的帮助。
附加请求信息:
- Sql Server设置为使用TCP/IP和共享内存协议 - 我们每页进行约4个DB请求,不算太多 - 在高峰时段,DB服务器发送1.5MB / sec - 在高峰时期,Web服务器CPU约为60% - 在高峰时期,Web服务器NIC负载为13MB / sec。 8MB正在发送,5MB正在接收。 同一NIC处理SQL和HTTP流量 - 我们确实使用了一些缓存,但是应用程序相当动态,因此大部分时间都需要最新数据