GlobalSCAPE Knowledge Base

Tuning Windows for TCP/IP performance

GlobalSCAPE 5
EFT SMB & EFT Enterprise


  • EFT Server (All Versions)
  • DMZ Gateway (All Windows versions)
  • Secure FTP Server (All Versions)


This topic describes how to tune Windows XP, Windows 2003, and Windows 2008 R1 & R2 operating systems for TCP/IP performance. "Tuning" involves adding several registry keys. To add a key to the registry, you can either edit it directly as described below or create and execute a .reg file. When you have finished adding or editing these registry keys, you must restart the Server. Configure the following settings or variables below according to your specific tuning needs. If necessary, refer to the Globalscape Knowledge Base article Q10411 - HOWTO: Windows Registry Settings, for the procedure for creating/editing keys and creating a .reg file.

These options are for advanced users only. Incorrectly editing the registry can severely damage your system. You should always back up (export a copy of) the registry before you make any changes to it.


In all versions of Windows, add the keys described below. Certain keys/values depend on the operating system installed (noted in the Value name column where different).

Subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters

Value Name
(DWORD 32-bit)
Value Data



This key determines the time that must elapse before TCP/IP can release a closed connection and reuse its resources. This interval between closure and release is known as the TIME_WAIT state or twice the maximum segment lifetime (2MSL) state. During this time, reopening the connection to the client and server costs less than establishing a new connection. By reducing the value of this entry, TCP/IP can release closed connections faster and provide more resources for new connections. Adjust this parameter if the running application requires rapid release, the creation of new connections, or an adjustment because of a low throughput caused by multiple connections in the TIME_WAIT state.


32768 (minimum)

This key determines the highest port number that TCP/IP can assign when an application requests an available user port from the system.


5 (seconds)

This key determines how many times TCP retransmits an unacknowledged data segment on an existing connection.


Determines the maximum number of TCP connections that can be open simultaneously. If the value is 0, you cannot open a connection.

Subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters

Value Name
(DWORD 32-bit)
Value Data

EnableDynamicBacklog 00000001 These keys, if many connection attempts are received simultaneously, increase the default number of pending connections that are supported by the operating system.

These values request a minimum of 20 and a maximum of 1000 available connections. The number of available connections is increased by 10 each time that there are fewer than the minimum number of available connections.

MinimumDynamicBacklog 00000020

MaximumDynamicBacklog 00001000

DynamicBacklogGrowthDelta 00000010

KeepAliveInterval 1 (second) This key determines how often TCP repeats keep-alive transmissions when no response is received.

Subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{Interface GUID}*

* {Interface GUID} is different for every system.

Value Name
(DWORD 32-bit)
Value Data Description
(Windows 2012 Standard and R2; Windows 2008 R1 & R2)
1 0 to enable Nagle's algorithm, 1 to disable, not present by default
(Windows XP; Windows 2003; Windows 2008 R1 & R2; Windows 2012 Standard and R2)

TCP/IP can be the source of some significant remote method delays. You can increase TCP performance by immediately acknowledging incoming TCP segments, in all situations.

NOTE: Some documentation states that this value may be placed directly under HKLM\SYSTEM\CurrentControlSet\Services\Tcpip or HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters. After testing, it was determined that the setting only takes effect when placed under the actual {Interface GUID} key.

Your .reg file for Windows 2008 would look something like this:

Remember to reboot the server computer after making the registry changes.

On Windows 2012 (Standard and R2) and 2008 (R1&R2), you must also disable autotuning:

  • Open a command prompt and execute the following command:

netsh int tcp set global autotuninglevel=disabled

The default level is "normal." The possible settings include:

  • disabled: uses a fixed value for the tcp receive window. Limits it to 64KB (limited at 65535).
  • highlyrestricted: allows the receive window to grow beyond its default value, very conservatively
  • restricted: somewhat restricted growth of the tcp receive window beyond its default value
  • normal: default value, allows the receive window to grow to accommodate most conditions
  • experimental: allows the receive window to grow to accommodate extreme scenarios (not recommended as it can degrade performance in common scenarios; only intended for research purposes. It enables RWIN values of over 16 MB)

Also In This Category

On a scale of 1-5, please rate the helpfulness of this article

Not Helpful
Very Helpful
Optionally provide private feedback to help us improve this article...

Thank you for your feedback!

Comments require login or registration.

Last Modified: 7 Months Ago
Last Modified By: kmarsh
Rated 2 stars based on 116 votes.
Article has been viewed 325K times.
Find Similar