INF: SQL Logs 17832 with Multiple TCP\IP Connection Requests
ID: Q154628
|
The information in this article applies to:
-
Microsoft SQL Server versions 6.0, 6.5
IMPORTANT: This article contains information about editing the registry.
Before you edit the registry, make sure you understand how to restore it if
a problem occurs. For information about how to do this, view the "Restoring
the Registry" Help topic in Regedit.exe or the "Restoring a Registry Key"
Help topic in Regedt32.exe.
SUMMARY
If SQL Server is hit with multiple and simultaneous TCP/IP connection
requests, such as the case with World Wide Web servers, the requests are
quickly rejected by responding with a TCP/IP Reset Frame.
This symptom is difficult to detect. If the client application includes
error code handling, the native error code is 10061 (WSAECONNREFUSED) for
the Open() function. On the server, Error 17832 - "Unable to read login
packet" appears in the SQL Error log.
If you trace this problem with a protocol analyzer, you can see that some
of the connection request frames have been replied to with the TCP Reset
bit set, which tells the sending station that the frame has been received,
but the server does not have the resources to process the connection
request.
MORE INFORMATION
A Winsock application accepts connections on a port by calling a Listen()
function, which has a backlog parameter specifying the maximum length of
the pending-connection queue. The Winsock specification defines the
maximum Listen() backlog at five and when it exceeds five, TCP/IP issues a
Reset.
The backlog for SQL Server can be configured to handle a great number of
pending connections by modifying the Windows NT Registry. In some cases,
the connection reset issue is resolved due to the modification.
WARNING: Using Registry Editor incorrectly can cause serious problems that
may require you to reinstall your operating system. Microsoft cannot
guarantee that problems resulting from the incorrect use of Registry Editor
can be solved. Use Registry Editor at your own risk.
For information about how to edit the registry, view the "Changing Keys And
Values" Help topic in Registry Editor (Regedit.exe) or the "Add and Delete
Information in the Registry" and "Edit Registry Data" Help topics in
Regedt32.exe. Note that you should back up the registry before you edit it.
If you are running Windows NT, you should also update your Emergency
Repair Disk (ERD).
- Start Registry Editor (REGEDT32.EXE) and locate the following Registry subkey in the HKEY_LOCAL_MACHINE subtree:
\Software\Microsoft\MSSQLServer\MSSQLServer
NOTES:
\Software\Microsoft\MSSQLServer$VirtualServerName
\MSSQLServer$VirtualServerName
Value Name: WinsockListenBacklog
Data Type: REG_DWORD
Data: 190
- Select the MSSQLServer subkey. From the Edit menu, select Add Value.
- Enter the following:
Value Name: WinsockListenBacklog
Data Type: REG_DWORD
Data: <Range is 1 to 0xFFFFFFFF>
NOTE: The data value affects overall system resources if it is set to a
high value. Windows NT 3.51 has a maximum overall backlog of 100 and
Windows NT 4.0 has a maximum overall backlog of 200 for all applications. The suggested method of testing with this value is to set the value in increments of five and observe the results until the connection reset stops.
- Click OK and quit Registry Editor.
- Shut down and restart Windows NT.
For more information on the Listen() function, refer to the WIN32 SDK
Programmer's reference.
For more information on the backlog parameter and Windows NT, please see
the following two articles in the Microsoft Knowledge Base:
Q113576
: WinSocket App's Reject Connection Requests with Reset Frames
Q127144
: Windows NT 3.5 Winsock Listen (Backlog) Parameter Limit
Additional query words:
Internet Information Server IIS windows sockets
Keywords : kbnetwork SSrvLAN
Version : winnt:6.0,6.5
Platform : winnt
Issue type :