First distinguish connection failures from slow page loads and slow sustained downloads. Then test with a fixed node and network before checking your local proxy, DNS, routing, and Mux settings. This guide is for v2rayN users who have imported a subscription and can connect but experience inconsistent speeds. Work through the checks in order and record each result to narrow down the cause without changing multiple settings at once.
1. Establish a speed baseline: latency isn't the whole story
TCP latency measures only part of the time it takes to establish a connection; it doesn't tell you how much data a node can transfer over time. The real connection latency test is closer to an actual request through the proxy, but results still depend on the test endpoint, DNS, and the destination's response. A low-latency node may have limited bandwidth, while a higher-latency node may deliver more consistent throughput.
Pause downloads, cloud sync, and system updates. Choose an HTTPS download resource you’re authorized to access, and keep the device, network, and test window the same. The figures below are suggested test conditions and example ports—not results measured by this site or a performance guarantee.
-
Record your current settings
In Help → About, note the client version. In Settings → Parameter Settings, record the current core, listening port, and Mux status; also note the routing mode on the main screen. Tabs may differ between versions, so check your actual interface. Don’t change ports just to match this guide.
-
Keep the proxy entry point fixed
Disable TUN for now and use the system proxy for baseline troubleshooting. In the tray menu, select System Proxy → Set System Proxy to enable it. Quit other apps that may change the system proxy, and keep the same proxy mode for all comparisons.
-
Choose candidate nodes
Select a candidate in the server list, right-click it, and run Test Server Real Connection Latency. Then set the node being tested as the active server and test the same resource on each node. A batch latency test does not measure download bandwidth.
-
Track three types of results
Record whether the connection works, how long the page takes to load, and the sustained download speed. After switching nodes, start a new request to avoid reusing an old browser connection. Include the units: 1 MB/s is about 8 Mbps.
2. Node checks: distinguish node congestion from destination throttling
Switch nodes on the same network first; don’t change DNS, protocol, and routing at the same time. Compare two usable nodes with different exits against the same download resource. Then keep one node and try a second destination. This helps determine whether the problem follows a node or just one resource.
| What you observe | Likely cause | Next step |
|---|---|---|
| Only one node is consistently slow | Node load, throttling, or a specific network path | Keep local settings unchanged and retest through another exit |
| Several nodes are slow only in the evening | Congestion on a shared network path or peak server load | Record results for the same resource at different times |
| Downloads are slow from only one site | Destination throttling, exit peering, or content delivery differences | Try a different destination and check for account or per-connection limits |
| All nodes are slow, and direct connections are slow too | Local access, wireless interference, or bandwidth use | First test a wired connection and other devices on your local network |
Updating a subscription refreshes server configurations; it doesn’t increase node bandwidth. Region, multiplier, or route labels in node names aren’t a substitute for testing. If your provider enforces account speed, data, or concurrent connection limits, check its service terms. The client can’t remove those limits.
Takeaway: keep a useful comparison
If switching nodes repeatedly restores speed, use the node that performs consistently and keep your comparison notes. There’s no need to reset the entire client straight away, or to blame the difference on a protocol name.
3. Network path checks: compare wired and hotspot connections
A network path includes the connection from your device to the router, your ISP access network, inter-provider links, and the node’s exit. Full Wi-Fi signal bars don’t guarantee a stable wireless connection. Uploads from other devices on the same access point can also queue web requests. Check network usage in Task Manager and rule out background traffic on your device first.
- Try a wired connection: Keep the node and destination the same, and switch from Wi-Fi to Ethernet. If the wired connection is stable, check for wireless interference, the Wi-Fi band, and router load.
- Try a hotspot: Connect the same computer to a mobile hotspot. If performance improves noticeably, investigate the original access network further—but one test isn’t enough to conclude that your ISP is restricting traffic.
- Check sustained performance: Observe the full 60-second window. A fast start followed by a slowdown may be caused by caching, burst bandwidth, throttling, or congestion. Don’t judge by a screenshot of a momentary peak.
- Check for packet loss: On Windows, run
ping -n 30 192.168.1.1to test your local gateway. Use this address only if it is your actual gateway; otherwise, substitute your device’s default gateway.
4. Local proxy, DNS, and routing: diagnose slow first loads and misrouted traffic
If a web page takes a long time to load but downloads are fast once started, check name resolution and connection setup first. If sustained downloads are also slow, investigate the network path and resource usage. The system proxy affects only apps that honor it; browser extensions, app-specific proxy settings, and TUN can change the actual route.
- Open Settings → Parameter Settings and check the local listening port. The commands below assume
127.0.0.1:10808accepts SOCKS connections. If your current port accepts HTTP only, don’t copy the SOCKS parameters as written. - Run the following commands in Windows Terminal. They fetch response headers only, to troubleshoot the request stage—not to measure download bandwidth. The example target is
https://example.com/. - The first command uses
socks5h, sending the target hostname through the SOCKS request for resolution on the proxy side. The second usessocks5, so the hostname is resolved locally. Alternate between them and repeat the comparison to avoid mistaking cache effects or changes at the site for a DNS issue.
curl.exe --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 30 -I https://example.com/
curl.exe --proxy socks5://127.0.0.1:10808 --connect-timeout 10 --max-time 30 -I https://example.com/
If the difference is consistent, open Settings → DNS Settings and check the resolution strategy for your current core. Remote resolution still depends on the core’s DNS and routing configuration; entering a public DNS address in every field won’t necessarily fix the issue. The node server’s address also needs a working resolution path—avoid a circular dependency where you need the proxy to resolve the proxy server.
Check the current routing mode on the main screen, then review custom rules under Settings → Routing Settings. Temporarily test one affected site with global proxy mode, then restore your original mode when finished. If the site works normally, check whether it matched a direct-connection rule by mistake and whether the DNS response affects IP-based rule matching. Rules are generally applied in order, so an overly broad rule near the top can shadow later rules.
5. Transport protocols and Mux: change one variable at a time
VMess and VLESS are proxy protocols; TCP, WebSocket, and gRPC are transport-related settings, while TLS is a separate layer. You can’t arbitrarily change a server-provided WebSocket node to another transport in the client. The path, Host, SNI, port, and server listener must match; otherwise, you’ll usually get a connection failure, not a performance boost.
- Start with the subscription settings: Keep the transport parameters provided by the server. Compare different entry points only if the server explicitly offers more than one, and keep test conditions the same.
- Test Mux on its own: Check the current core’s Mux option under Settings → Parameter Settings. Record its original value, turn it off, then restart the core or switch the active server to establish a fresh test connection.
- Consider the use case: Mux can reuse an underlying connection for multiple logical connections, which may reduce the overhead of short-lived connections. It may not help much with long downloads. In some reliable byte-stream multiplexing scenarios, packet loss can also delay multiple requests at once.
- Don’t increase concurrency blindly: More concurrent connections don’t always mean higher speeds. Support varies by node, core, and transport combination. If there’s no clear improvement, restore the original value; don’t change Mux, fragmentation, and DNS all at once.
Monitor CPU and memory as well. If one CPU core stays fully loaded during transfers and changing networks or nodes makes little difference, check the core version, excessive logging, other network-filtering software, and background processes. Back up your configuration and read the release notes before updating the client or core. Don’t disable the firewall or skip certificate verification for a supposed speed boost.
6. Log errors: separate connection failures from slow speeds
Repeated reconnects can also make pages feel slow. Open the client log and look for failure messages that recur around the time the issue occurs. The examples below may appear in logs; full prefixes vary by core and operating system. Don’t draw conclusions from a single error without its surrounding context.
Error: context deadline exceeded
Cause and fix: An operation didn’t complete within the allowed time. This can happen during DNS resolution, connection setup, or while waiting for a response. Check nearby log entries to identify the target, then compare different targets on the same node and different nodes for the same target. Don’t just increase the timeout.
Error: connection refused
Cause and fix: The destination or an intermediary actively refused the connection. Check the address and port in the log. If it’s the local proxy address, make sure the core is running and the app is using the correct port. If it’s the server address, verify the subscription parameters and server listener.
Error: lookup ...: no such host
Cause and fix: DNS didn’t return a usable result. Check whether the failed hostname belongs to the node server or the destination, verify its spelling, DNS settings, and resolution path, then try the request again.
7. Common questions: narrow down settings by symptom
Why are downloads slow when latency is low?
Latency isn’t the same as throughput. Set the node as the active server and observe a download from the same resource for 60 seconds, then try a second node and a second destination. If only one destination is slow, check for throttling there. If several destinations are slow, investigate node bandwidth and the network path.
Global proxy mode made things faster. Should I leave it on?
Use it as a routing comparison, not an automatic fix. Restore your original mode, then check which rule matches the destination under Settings → Routing Settings and confirm the outbound route in the logs. Correct any misrouting and retest in your original mode.
Why does the browser load pages slowly when the speed test is fast?
First disable any proxy extension configured separately in your browser, then use a terminal command with the local proxy specified explicitly for comparison. If the terminal request works normally, check the browser’s secure DNS, cache, and connection reuse. If it’s slow too, continue with the core’s DNS and routing settings.
I changed DNS and Mux, but still can’t tell what caused the problem. What now?
Restore your recorded baseline, then test nodes, network access, DNS, and Mux in that order, changing one thing at a time. Keep three results and the test time for each run. Keep a change only if the improvement is repeatable; a one-off peak isn’t a reliable result.