Error from IIS 6: Unable to read data from the transport connection: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.

Hello,

I have two Windows 2003 Servers that run our asp.net applications under IIS 6.  Our web app generates SQL Reporting Service reports for the client users.  When a client machine requests a report with a large amount of data, they will receive an error when hitting Server A but it works fine when performing the same request on Server B. Note: reports with a small amount of data work fine on both servers.

The error received is:
Unable to read data from the transport connection: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.

This will happen from several different client machines where the report get served to them fine when hitting Server B, but the same user hits Server A and receives the error above.

There must be some configuration difference between the two web servers, but I am at a loss as to what it could be.

Any ideas?

Thanks,
John
JCanepaAsked:
Who is Participating?
 
becraigConnect With a Mentor Commented:
There are a few known issues for this, however since you are running the same app on both servers it is possible it might be an issue with consumption of ephemeral ports.

SYMPTOMS
If you try to set up TCP connections from ports that are greater than 5000, the local computer responds with the following WSAENOBUFS (10055) error message:
An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.

RESOLUTION
To increase the maximum number of ephemeral ports, follow these steps:

    Start Registry Editor.
    Locate the following subkey in the registry, and then click Parameters:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
    On the Edit menu, click New, and then add the following registry entry:
    Value Name: MaxUserPort
    Value Type: DWORD
    Value data: 65534
    Valid Range: 5000-65534 (decimal)
    Default: 0x1388 (5000 decimal)
    Description: This parameter controls the maximum port number that is used when a program requests any available user port from the system. Typically, ephemeral (short-lived) ports are allocated between the values of 1024 and 5000 inclusive. After the release of security bulletin MS08-037, the behavior of Windows Server 2003 was changed to more closely match that of Windows Server 2008 and Windows Vista. For more information about Microsoft security bulletin MS08-037, click the following article numbers to view the articles in the Microsoft Knowledge Base:
    951746 MS08-037: Description of the security update for DNS in Windows Server 2008, in Windows Server 2003, and in Windows 2000 Server (DNS server-side): July 8, 2008
    951748 MS08-037: Description of the security update for DNS in Windows Server 2003, in Windows XP, and in Windows 2000 Server (client side): July 8, 2008
    953230 MS08-037: Vulnerabilities in DNS could allow spoofing
    Exit Registry Editor, and then restart the computer.

Note An additional TCPTimedWaitDelay registry parameter determines how long a closed port waits until the closed port can be reused.

Reprinted from:
http://support.microsoft.com/kb/196271
0
 
JCanepaAuthor Commented:
This resolved my problem.  Thanks!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.