At a Glance

This guide is for cases where a node connects and webpages load, but downloads, video, or large file transfers are noticeably slow. Keep test conditions fixed, compare several nodes from the same subscription, check how performance changes by time of day, and only then adjust v2rayN routing, the core, DNS, Mux, or local proxy settings.

Establish a Reproducible Speed Baseline First

“Slow” needs to become comparable data. Page-load times are affected by DNS, caching, scripts, and the destination site's load, while a single latency reading says nothing about sustained throughput. A more reliable method is to choose one resumable large file and run three consecutive tests on the same network, device, and download tool.

Before testing, pause cloud sync, system updates, and other downloads. Keep Wi-Fi on the same access point, and do not switch between wired and wireless during a test. Each run should last at least 60 seconds; record the average speed during the stable phase rather than the launch-time peak.

Application requestLocal inboundRoute matchingProtocol handshakeRelay pathDestination

Any segment of this path can become the bottleneck. A direct test establishes the local access ceiling; a proxy test shows node and route overhead; testing another destination rules out throttling by a single download source. Record all three separately—one speed-test page is not enough to draw a conclusion.

512 MB
Fixed test file
3 runs
Repeats per node
60 seconds
Minimum observation time per run
10808
Common local SOCKS port
  1. Turn off v2rayN's system proxy, test direct-download speed, and record the current ceiling of the access network.
  2. Restore the system proxy, select node A, wait for a stable connection, then run three tests and use the median.
  3. Keep everything else unchanged and test nodes B and C in turn.
  4. Retest with another download source to determine whether the slowdown affects only a specific destination.
  5. Record the core version, local port, and test time from the v2rayN log so the result can be reproduced later.

Layer 1: Check Whether the Node Itself Is Throttled

Node-level issues are usually stable and repeatable. If node A stays below node B for three consecutive runs in the same time window and speed immediately returns after switching nodes, check node load, server bandwidth, destination region, and node configuration. Repeatedly changing local DNS or the system proxy usually will not change the result.

Use comparable configurations within the same protocol stack when testing nodes. For example, when comparing two VLESS nodes, keep the destination region, transport, and encryption layer as similar as possible. Comparing a distant VMess node directly with a nearby VLESS node only shows that the two complete paths perform differently; it does not prove that one protocol is faster.

Example comparison at a 300 Mbps access speed
Test subject Run 1 Run 2 Run 3 Initial assessment
Direct baseline 286 Mbps 281 Mbps 288 Mbps Local access is normal
Node A 92 Mbps 88 Mbps 94 Mbps Stable speed
Node B 31 Mbps 29 Mbps 30 Mbps Possible node-side cap
Node C 84 Mbps 18 Mbps 67 Mbps Highly variable; continue checking the route

Node B stays near 30 Mbps across all three runs, showing stable low speed that is more consistent with a bandwidth cap, sustained high load, or a limited server egress. Node C varies sharply, so it cannot be labeled node-throttled yet; continue by checking packet loss, time of day, and route changes.

Conclusion: Switch nodes when speed is consistently low

With the same device, download source, and time window, if one node delivers only one-third the speed of others for three consecutive runs, flag it as a node-side issue first. Do not change Mux, DNS, and routing at the same time, or you will lose a comparable baseline.

Protocol names do not replace real-world testing

Layer 2: Use Time and Packet Loss to Detect Route Congestion

Route problems are most apparent when performance changes over time. If the same node is fine in the morning, slows during a recurring evening window, and recovers late at night, the cause is often link congestion or load at an inter-network gateway. The node server itself may also be busy in the evening, so compare multiple nodes.

How to Interpret Off-Peak Tests
Observed result More likely cause Next step
90 Mbps in the morning, 18 Mbps in the evening Peak-hour congestion Retest with another region or ingress route
Stable at 30 Mbps all day Node bandwidth or service-side limit Compare with other nodes in the same subscription
Speed fluctuates between 5 and 100 Mbps Packet loss, retransmissions, or Wi-Fi interference Switch to a wired network and check the logs
Only one destination is slow Destination throttling or return-path differences Verify with another download source

ICMP ping provides only basic clues about round-trip time and packet loss. Some servers restrict ICMP responses while TCP or UDP proxy connections remain healthy; the reverse can also happen, with good ping numbers but persistent retransmissions on the high-volume transfer path. Use ping to watch trends, not to rank node speed on its own.

Error: context deadline exceeded

Cause and fix: The connection or request did not complete within the allowed time. First retest with another node in the same region; if several nodes fail mainly in the evening, investigate route congestion.

Error: failed to find an available destination

Cause and fix: The destination could not be resolved, or no outbound route was available. Check the node address and DNS settings, update the subscription, and restart the core.

Error: connection refused

Cause and fix: The remote port actively refused the connection, commonly because the service is not listening or the port configuration is invalid. Confirm that the node port matches the original subscription configuration, then switch nodes to verify.

Layer 3: Rule Out v2rayN Local Settings One by One

Enter the local-configuration layer only when other nodes perform normally and time-of-day differences are minor. The rule remains: change one thing at a time, reconnect the current node after each change, and repeat the same test. Changing several options at once makes the true cause impossible to identify, even if speed returns.

  1. Check the running core: Open the log and record the actual v2rayN and Xray versions. For example, write “v2rayN 7.12.5, Xray 25.5.16” in the troubleshooting record instead of simply “latest version.”
  2. Check routing mode: Under “Settings” → “Routing Settings,” confirm the active rules. Run one comparison using global proxy mode first. If global mode is normal but rule mode is slow, check whether the download domain was incorrectly sent to direct access or a restricted outbound.
  3. Verify local ports: Go to “Settings” → “Parameter Settings” and make sure the SOCKS, HTTP, or mixed port does not conflict with another program. The test tool must point to the actual port shown in the interface.
  4. Compare with Mux disabled: Edit the current server configuration, record the original Mux state, disable it, reconnect, and run three tests. Large-file transfers do not always benefit from multiplexing, which can add contention on an unstable route.
  5. Check the DNS path: If the first page load is slow but speed is normal after the connection is established, focus on resolution time. If downloads remain slow throughout, DNS is usually not the main bottleneck.
  6. Watch device resources: Check CPU, memory, and network-adapter usage during a download. If a single core process stays near 100% of one core, reduce concurrency and compare with another device.

Test system proxy and TUN mode separately as well. Use the system proxy first for ordinary browser traffic; test TUN only when more application traffic needs to be captured. The two modes use different traffic entry points and routes, so do not combine their results in one speed table.

Error: address already in use

Cause and fix: The local listening port is already occupied by another process. Close duplicate client instances, or change the port under “Settings” → “Parameter Settings” and restart the core.

Error: proxy connection ended unexpectedly

Cause and fix: The proxy connection ended before the transfer completed. First disable Mux for comparison, then check the node transport parameters, network changes, and preceding errors in the log.

An Android device can also provide a cross-check. Import the same subscription into v2rayNG or v2flyNG, select the same node, and test on the same Wi-Fi network. If the desktop remains slow while Android is normal, inspect the local port, routing mode, and desktop resources first. Note that v2rayNG uses the Xray core and v2flyNG uses the v2fly core; record any core and configuration differences.

Common Misdiagnoses and Specific Fixes

Speed issues are often distorted by a single number. Latency, handshake time, time to first byte, and sustained download speed are different metrics. Troubleshooting results matter only when conditions are fixed and tests are repeatable.

Why is the download still slow with only 40 ms latency?

40 ms only indicates a quick round trip. Continue with a sustained download of at least 60 seconds and compare two nodes in the same region; if the server egress is limited to 20 Mbps, low latency will not increase throughput.

Will switching to VLESS definitely improve speed?

Do not judge by protocol name alone. Keep the same destination and test window, then run three tests for each option. If the difference is under 5%, focus on the route, server load, and local resources.

Will reinstalling v2rayN help if speeds are slow at night?

Retest the same node in the morning and evening first. If speed consistently drops from 90 Mbps to 20 Mbps and multiple devices show the same result, reinstalling the client usually cannot fix congestion on the route.

What if webpages are faster with Mux enabled but downloads are slower?

Record both the time to first byte for a webpage and the download speed of a 512 MB file with Mux enabled and disabled. Choose the setting according to your main use case and retain the node's original configuration instead of relying on browser impressions alone.

Should I switch nodes if only one website is slow?

First test a second download source through the same node. If other destinations are normal, suspect destination throttling, regional routing, or return-path differences before changing every node configuration.

A subscription update may also change node addresses, ports, or transport parameters. If speed changes suddenly after an update, keep the update time, node name, and core log, then rerun the three tests. Do not combine pre-update and post-update results into one average.

Reach a Conclusion: Stop at the Layer the Evidence Supports

A complete investigation does not mean changing every setting; it means finding the first set of data that consistently reproduces the difference. If switching nodes restores speed immediately, stop at the node layer. If speed varies by time of day, move to the route layer. Check local settings only when one device or one proxy mode behaves differently.

Final Rule: Change Only One Variable at a Time

Node, time, destination, proxy mode, and Mux are all variables. Change only one per run, and retain the three results plus the log version. That is how “it sometimes gets faster” becomes a reproducible diagnosis.

Keep the final record to five columns: test time, node name, core version, configuration change, and the median of three runs. When slow speeds return, reuse the same conditions to quickly determine whether the old issue has returned or the route has changed.