Published 31 January 2017
SQL Server holds data in the output buffer until it receives an acknowledgement from the client that it has finished consuming that data. ASYNC_NETWORK_IO is an indication that your client application is not able to efficiently retrieve the data it needs from the system. You may also see this wait if there are fundamental issues with your network, which can lead to long waits while the data is processed by the client and then signals returned back to the server.
There are many potential causes for this wait:
Your application code may not be retrieving data correctly, and needs to be reviewed.
There are very large data sets being requested by the client, and these requests need to be broken into smaller pieces.
An application is requesting large amounts of data but then filtering it on the client side. Fixing this means limiting the rows returned from SQL Server through filtering or other means.
You have badly configured network cards, switches, or some other problem on your network.
The query is being run from a location physically remote from your SQL Server instance, resulting in high network latency.
Investigating the application
Make sure the application is only moving the data it needs, and only moving it when necessary.
Validate that the application is completing transactions that it opens and that it does this in a timely manner.
Make sure the application is consuming the data from SQL Server efficiently.
Investigating the network
Make sure your network is configured correctly and you’re not experiencing hardware issue between your client applications and the server.
Use sys.dm_io_virtual_file_stats to test the network for general latency due to load or distance. See sys.dm_io_virtual_file_stats (MSDN).