We are having performance problems in our web application at peak times, which are currently split between one 2003 IIS6 web server and one SQL Server 2005 database server. The query time on the database server looks great (about 30 ms), and the processor is low (less than 20%), however, requests can take a lot of time on the web server (more than 1 second).
I looked in perfmon for tips and saw that the average IO network latency is ~ 400 ms, which completely explains the difference in performance. I also ran some queries in SSMS and see that every second is about 10,000 ms of ASYNC_NETWORK_IO aggregate wait types.
From some studies, it seems that the problem is insufficient network bandwidth or that the web server is not processing the results fast enough. How do I know what it is and then allow it?
We use NHibernate for our data layer, therefore, as I know, DataReaders are not used. There are no known queries that return large sets of results, although there is one table in which there is a column containing compressed XML documents.
Thanks in advance
Additional Information Requested
- Sql server configured to use TCP / IP and shared memory protocols
- We make about 4 database queries per page, nothing funny
- At peak times, the database server sends 1.5 MB / s
- At peak, the web server processor is about 60%
- The maximum AT value, the load of the web server network adapter is 13 MB / s. 8MB sends, 5MB accepts. The same NIC handles SQL and HTTP traffic
- We use some caching, but the application is quite dynamic, so in most cases up-to-date information is required.
source share