--
YanaLorne - 08 Aug 2007
Appxd and appxdsvc.exe have been "fixed" as of release 4.2.8 so that an APPX session can more reliably detect that the TCP connection to the client has been lost. This means that the session can then terminate itself instead of hanging around indefinitely as an orphan. There are four environment variables that can be set to override the default settings for appxd. The configuration parameters for the Windows based APPXDSVC service can be specified in the registry. After the service is installed, you would add an Expandable String Value to the Config Key. The Config Key for the APPXDSVC service would normally be found at: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\appxd-8060\Config
Configuration parameters for appxdsvce:
#
TCPEnableKeepAlive = true #Enable TCP dead-connection detection
#
TCPKeepCount = 8 #Maximum number of keep-alive pings
#
TCPKeepIdle = 300 #Idle time before ping sent to client (in seconds)
#
TCPKeepInterval = 60 #Interval between keep-alive pings
#
TCPNoDelay = true #disable TCP packet filling delay?
Environment variables for appxd:
APPXD_DISABLE_KEEPALIVE
APPXD_KEEPIDLE
APPXD_KEEPINTERVAL
APPXD_KEEPCOUNT
The values shown are the default values, those values are installed when you create a new service
and they are also the values that we use if the entries are missing from the registry.
The
AppxDSvc installer only writes a Config entry if it differs from the default value.
That means that the installer won't write out entries for the
TCPKeepXXX values,
but
AppxDSvc will pretend like those values are present (and set to their default values).
You can add the entries manually if, for some reason, you want to change the defaults.
The time before a server session closes would be the combination of all of these.
Here is what happens.
After 300 seconds of idle time the server TCP stack will start trying to ping the client TCP stack.
The server will make 8 attempts to ping the client and get a response before giving up and closing.
It will wait for 60 seconds after each ping attempt for a reply before sending the next ping.
So in this case it will be 300 seconds + ( 8 * 60 seconds ) = 780 seconds = 13 minutes
before the server session goes away.
appxd has environment variables for these settings as follows:
APPXD_DISABLE_KEEPALIVE set to anything will turn off the keepalive code.
APPXD_KEEPIDLE =
TCPKeepIdle
APPXD_KEEPINTERVAL =
TCPKeepInterval
APPXD_KEEPCOUNT =
TCPKeepCount