How can I troubleshoot my Linode's poor network performance?

Linode Staff

I just upgraded my Linode's plan, but its network performance appears to be worse than it was before this upgrade. How can I troubleshoot my Linode's poor network performance?

2 Replies

There are four main ways that you may be able to go about resolving these networking performance issues, but first, there is some important background information to mention here.

Background

When changing your Linode to a different plan, our systems migrate your Linode to a different host in the same data center to ensure the availability and optimal placement of the new plan's resource allotment.

This is generally a very smooth process, although sometimes, this may result in your Linode being placed on a host whose other Linodes affect the performance of your own Linode.

Methods

Below are the four methods for assessing your Linode's networking performance problems and troubleshooting them.

Check for CPU steal

First and foremost, we can determine whether your Linode is suffering from CPU steal. To assess this possibility, you may run these three commands on your Linode:

iostat 1 10

for x in `seq 1 1 30`; do ps -eo state,pid,cmd | grep "^D"; echo "-"; sleep 2; done

top -bn 1 | head -15

We have another Community question that explains more about what these commands do and what their outputs mean.

Keep in mind that our Dedicated CPU plans do not share CPU resources with other LInodes and are thus immune to CPU steal.

Neighbors using too much CPU

Since Linode is a shared hosting platform, your Linode will be running alongside several other customer Linodes on the same host. Occasionally, these neighbor Linodes will be using an excessive amount of CPU resources, which will degrade your own Linode's performance.

If the results from the above section indicate that your Linode is suffering from CPU steal, you may write into Linode Support with the output that these commands had generated, which will allow us to take a further look into this possibility.

Even if you are not currently experiencing CPU steal, you may still feel free to write into our Support department to have us explore whether your Linode's neighbors are potentially affecting your own Linode.

As noted in the above section, our Dedicated CPU plans do not share CPU resources with other Linodes, rendering them immune to CPU steal.

MTR

It is possible to experience network issues even without any CPU resource contention affecting your Linode. To troubleshoot this possibility, you can run a bidirectional MTR report between your Linode and another device, which will test the overall connectivity health between these two devices.

To pursue this option, install MTR on both your Linode and your other networked device. Once you do so, you may follow the procedures below to generate these MTR reports.

While logged into your Linode:

mtr -rwzbc100 <other.device.IP.Address>

You may visit https://ip.me/ to determine the IP address of your other device so that you may run this test.

While logged into your desktop:

mtr -rwzbc100 <linode.IP.address>

You may use these instructions to determine your Linode's IP address.

(N.B. It is also possible to conduct these tests over IPv6, although MTR requires you to provide the -6 option before it will do so. You may combine this -6 with the other options in the above commands like so: -6rwzbc100.)

If you cannot currently access your Linode via SSH, you can use our Lish console to issue the reverse report from your Linode. More information about using Lish can be found in our Lish guide.

iperf

Last but not least, you can use the iperf utility to directly measure the network throughput between your Linode and another device.

iperf will work similarly to MTR where you will install the utility on your Linode and another device, after which you will run a command on each device to perform this test.

Specifically, you will need to run this command on whichever device you are designating as your iperf server:

iperf -s

This command will remain in standby awaiting for an incoming iperf client connection, which you may initiate from the other device with this command:

iperf -c <iperf_server_address>

The <iperf_server_address> will be the IP address of which command is running iperf -s: this will be your Linode's IP address if you are running this iperf -s command on your Linode, and it will be whatever IP address is provided by https://ip.me/ when visiting this site on your other device.

If you are experiencing issues with your connection being refused when trying to run this test, you may need to disable your firewall and/or reverse the direction of the test.

Conclusion

As you can see, there are quite a number of reasons why your Linode's network connection may be suffering. Luckily, there are excellent tools and methods for assessing the scope of these issues and mitigating them.

It is good to keep in mind that there are both theoretical and practical limits to the networking capabilities of your Linode, and a certain level of network latency will always be possible when connecting your Linode with devices outside of its data center. For optimum intra-data-center communication, it is possible to assign private IPv4 addresses to your Linodes and leverage the throughput of the data center's intranet. This also occurs when communicating between two Linodes in the same data center over their SLAAC-assigned IPv6 addresses.

Nonetheless, these methods should generally be capable of improving your network performance to a serviceable level should the above factors be affecting your Linode.

Please feel free to reply to this question if there's anything else that we can clarify for you!

Because iperf needs to be installed on both servers to run successfully, and we have many customers that are running Windows on their local computer, I wanted to provide a link to the iperf installation page:

https://iperf.fr/iperf-download.php

From this page, you'll find binary files for installing iperf and iperf for various operating systems.

Reply

Please enter an answer
Tips:

You can mention users to notify them: @username

You can use Markdown to format your question. For more examples see the Markdown Cheatsheet.

> I’m a blockquote.

I’m a blockquote.

[I'm a link] (https://www.google.com)

I'm a link

**I am bold** I am bold

*I am italicized* I am italicized

Community Code of Conduct