RemoteApp is Instable
According to my experience, Remote Desktop connections (especially RemoteApp connections) suffer from several instablities, which manifest themselves especially when using RemoteApp all day long.
There are several issues that affect stability and useability:
Connection breaks inadvertly. When the application is idle for a while (about 30 min) and the user takes back control, the application is unresponsive. The connection to the server is broken. After a few seconds the Message The connection has been lost. Attempting to reconnect you to your session. appears. The reconnection is not always successful. These broken connections have nothing to do with Idle Timeout settings.
The logs (Event Log, TerminalServices-LocalSessionManager) show the disconnection at the moment when the user clicks on the application which becomes unresponsive. Some connections reconnect (ca. 80%, others log off ca. 20%).
Occasionally black screen on reconnection. Occasionally, when the a session is disconnected, and a user logs in again, he receives a black screen instead of the login screen (like here, here and elsewhere with different solutions). My settings: Disconnected sessions are logged off after 5 minutes.
Context
I have two Windows Server 2008 R2 with RDP and RemoteApp installed. I have Windows XP and Windows 7 clients that connect to it. The users run the RemoteApp all day long, but they may let the application idle during an hour or so.
What I did so far
Keepalive on server side improved disconnections
Thanks to @hyp, I got a step closer to a stable situation. I configured a keepalive on server side by configuring local group policy:
Computer Configuration -> Policies -> Admin Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Connections -> Configure keep-alive connection interval
The situation is better, but still not satisfactory. The connection still breaks inadvertedly, but less frequently (I get half the number of disconnections, and I did not get any more any help desk calls on this problem). Now, what happens is that the server notices when the connection is broken, disconnects the session and logs the user out. The user experience is now better, because the session breaks immediately when the network incident is happening, unlike before when the session broke only when the user interacted.
But, what I would like is that the Client Computer notices the disconnection and tries automatically to reconnect. This will avoid that the user need to login again.
Is it a general problem with RemoteApp that the connections are not reliable ? Does somebody make extensive usage of RDP and has this same problem ? Or are out there people that never encountered this ?
If RemoteApp is as sensitive to minor network perturbances, how do other cope with the problem ? If it is only as sensitive in my context, how to determine if the problem is with my server configuration or with my ISP ?
I there something else I could do to get even more stable RDP connections ?
On suggestion I'm turning the comment into an answer.
As it sounds that you need some sort of keep-alive signal, there is one available for RDP connections but it is turned off by default. The setting which you're looking for is:
Just make sure to apply it to your RDS servers and try it out, hopefully this will help.