[Solved] Why is AnyViewer Remote Connection Slow?

User Case: AnyViewer Remote Connection Slow

When using AnyViewer to control a remote computer, you may notice that the screen updates become slower over time, or even stop completely, especially when playing videos or games on the remote computer. This may eventually lead to the disconnection of the control connection. Looking at the connection status, you will see that the latency is very high, this is the main phenomenon of AnyViewer remote connection slow, as shown in the following diagram:

AnyViewer Remote Connection Slow

Analyze the AnyViewer Remote Connection Slow Issue with Unicorn

At first, we thought that network congestion was causing the remote connection slow. However, checking the bandwidth usage of the relay server revealed that it wasn’t high. Also, when the control connection was just established, the latency was very low, only a few milliseconds. Therefore, we suspected that there might be another reason.

By chance, we noticed that when the remote connection was slow, the CPU usage of the controlling computer was also high. This suggested that the controlling computer might be overwhelmed and unable to receive data, leading to network remote connection slow. Therefore, we launched the Unicorn network analyzer and immediately started capturing network packets. Then, we observed the TCP window size changes on the controlling side and indeed found the window size was 0, as shown in the screenshot below:

AnyViewer Remote Connection Slow

The TCP window size, or receive window, controls the amount of unacknowledged data a sender can transmit to a receiver. When it becomes 0, the controlled end will stop sending data. From the graph above, we can see that the TCP window of the controller frequently drops to 0, which causes the delay.

How to Solve AnyViewer Remote Desktop Connection Slow Issue

  1. Close some background applications on the control side to reduce CPU usage
  2. Click the menu “Mode>>High Speed” to switch the low-quality mode
  3. Click on the menu “Mode>>Hardware decoding of the controller” to enable hardware decoding