DigitalOcean Vs Hetzner: Which is The Best VPS Provider

I am using both DigitalOcean and Hetzner for years and in this article, I would like to make a comparison between them to see which one is for you and see the performance that both have to offer. You can find a Hetzner Review and a DigitalOcean Review if you want to see more details. Hetzner is an inexpensive and reliable DigitalOcean alternative when it comes to droplets.

For both of them, we will only check the VPS part and what has to offer, both are offering a variety of services besides VPS that we are not going to cover in this article.

With both services, you can host WordPress websites with CyberPanel or you can have Docker installed and host multiple apps with Nginx as a reverse proxy. You can host apps like the Uptime Monitoring tool, or Google Analytics alternative with Plausible.

DigitalOcean Vs Hetzner

Now let’s dive into the fun part and see how both services are doing in terms of features, price, and performance, and see why Hetzner is the best alternative to DigitalOcean.

DigitalOcean

1.Prices

The cheapest VPS that you can create starts at 5$ and it has 1 CPU and 1GB of RAM. Then the price doubles and for instance for a 2 CPU with 4 GB of RAM you pay 20$

2. DataCenters

DigitalOcean has 8 data centers around the world that you can use. in the US you have 2, in Europe another 3, Asia 2, and Canada 1

Winner

3. Interface

DigitalOcean is having a clean UI with easy-to-access services. Below is a picture:

4. Performance

So I will use a 2CPU with 2 GB of Memory regular one at 15 USD a month. In Ney York datacenter.

VPS YABS Bench Test

[email protected]:~# curl -sL yabs.sh | bash
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2022-02-18                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Tue Mar  8 15:31:37 UTC 2022

Basic System Information:
---------------------------------
Processor  : DO-Regular
CPU cores  : 2 @ 2294.576 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM        : 1.9 GiB
Swap       : 2.0 GiB
Disk       : 58.1 GiB

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 52.02 MB/s   (13.0k) | 507.68 MB/s   (7.9k)
Write      | 52.09 MB/s   (13.0k) | 510.35 MB/s   (7.9k)
Total      | 104.12 MB/s  (26.0k) | 1.01 GB/s    (15.9k)
           |                      |
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 645.25 MB/s   (1.2k) | 686.12 MB/s    (670)
Write      | 679.54 MB/s   (1.3k) | 731.82 MB/s    (714)
Total      | 1.32 GB/s     (2.5k) | 1.41 GB/s     (1.3k)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed
                |                           |                 |
Clouvider       | London, UK (10G)          | 55.1 Mbits/sec  | 78.0 Mbits/sec
Online.net      | Paris, FR (10G)           | 1.77 Gbits/sec  | 2.21 Gbits/sec
WorldStream     | The Netherlands (10G)     | 1.86 Gbits/sec  | 2.33 Gbits/sec
WebHorizon      | Singapore (400M)          | 517 Mbits/sec   | 419 Mbits/sec
Clouvider       | NYC, NY, US (10G)         | 2.00 Gbits/sec  | 7.68 Gbits/sec
Velocity Online | Tallahassee, FL, US (10G) | 1.32 Gbits/sec  | 4.04 Gbits/sec
Clouvider       | Los Angeles, CA, US (10G) | 1.73 Gbits/sec  | 106 Mbits/sec
Iveloz Telecom  | Sao Paulo, BR (2G)        | 238 Mbits/sec   | 1.60 Gbits/sec

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value
                |
Single Core     | 533
Multi Core      | 949
Full Test       | https://browser.geekbench.com/v5/cpu/13322675

Hetzner

1.Prices

The cheapest price that Hetzner has also started from about 4.15 EUROS without tax and you get 1CPU with 2 GB of RAM. For 2 CPUs and 4 GB of RAM, you will pay 5.83 EURO. Prices are cheaper at Hetzner, here is the clear winner.

Winner

2. DataCenters

Hetzner is the only data center on 2 Continents 1 in US and 3 in Europe (Germany and Finland).

3. Interface

Hetzner has a similar interface with a clean UI, there is no clear winner here:

4. Performance

Here we will go use a 2CPU 2 GB of RAM in Ashburn at 4.75 Euros.

VPS YABS Bench Test

[email protected]:~# curl -sL yabs.sh | bash
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2022-02-18                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Tue Mar  8 08:22:55 UTC 2022

Basic System Information:
---------------------------------
Processor  : AMD EPYC Processor
CPU cores  : 2 @ 2445.406 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM        : 1.9 GiB
Swap       : 2.0 GiB
Disk       : 37.5 GiB

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 148.06 MB/s  (37.0k) | 1.38 GB/s    (21.6k)
Write      | 148.45 MB/s  (37.1k) | 1.38 GB/s    (21.7k)
Total      | 296.52 MB/s  (74.1k) | 2.77 GB/s    (43.3k)
           |                      |
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 2.41 GB/s     (4.7k) | 3.02 GB/s     (2.9k)
Write      | 2.54 GB/s     (4.9k) | 3.22 GB/s     (3.1k)
Total      | 4.96 GB/s     (9.6k) | 6.25 GB/s     (6.1k)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed
                |                           |                 |
Clouvider       | London, UK (10G)          | 49.9 Mbits/sec  | 77.0 Mbits/sec
Online.net      | Paris, FR (10G)           | 802 Mbits/sec   | 1.55 Gbits/sec
WorldStream     | The Netherlands (10G)     | busy            | busy
WebHorizon      | Singapore (400M)          | 238 Mbits/sec   | 52.8 Mbits/sec
Clouvider       | NYC, NY, US (10G)         | 829 Mbits/sec   | 5.06 Gbits/sec
Velocity Online | Tallahassee, FL, US (10G) | 774 Mbits/sec   | 3.76 Gbits/sec
Clouvider       | Los Angeles, CA, US (10G) | 710 Mbits/sec   | 122 Mbits/sec
Iveloz Telecom  | Sao Paulo, BR (2G)        | 704 Mbits/sec   | 1.51 Gbits/sec

iperf3 Network Speed Tests (IPv6):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed
                |                           |                 |
Clouvider       | London, UK (10G)          | 47.6 Mbits/sec  | 80.5 Mbits/sec
Online.net      | Paris, FR (10G)           | 1.06 Gbits/sec  | 1.13 Gbits/sec
WorldStream     | The Netherlands (10G)     | 949 Mbits/sec   | 1.59 Gbits/sec
WebHorizon      | Singapore (400M)          | 614 Mbits/sec   | 388 Mbits/sec
Clouvider       | NYC, NY, US (10G)         | 1.04 Gbits/sec  | 4.78 Gbits/sec
Clouvider       | Los Angeles, CA, US (10G) | 1.01 Gbits/sec  | 116 Mbits/sec

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value
                |
Single Core     | 1096
Multi Core      | 2075
Full Test       | https://browser.geekbench.com/v5/cpu/13309178

As can be seen in the above test Hetzner 5Euro VPS is better in every aspect than DigitalOcean, the IO is better and the CPU is 2 times better. DigitalOcean has high frequently she’s but they are more expensive, here I wanted to see the basic shapes. And here Hetzner is the clear winner.

WordPress Test

Let’s see some tests with WordPress and Kadence theme installed with the default starter template.

WordPress Test

Both sites have the same plugins and configs, so they are identical.

The results are very similar for both of them, you can optimize them even further if you want. Next, let’s do the stress test for both servers.

Stress Test

top - 07:42:07 up 36 min,  1 user,  load average: 0.01, 0.00, 0.00
Tasks: 144 total,   1 running, 143 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.7 us,  2.7 sy,  0.0 ni, 89.7 id,  0.0 wa,  0.0 hi,  4.6 si,  0.2 st
MiB Mem :   1983.2 total,    591.5 free,    516.2 used,    875.5 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1262.4 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  5887 nobody    20   0   37520  21000   7616 S   8.0   1.0   0:05.47 litespeed
  5888 nobody    20   0   36292  21820   8368 S   6.3   1.1   0:04.76 litespeed
    18 root      20   0       0      0      0 S   0.7   0.0   0:00.30 ksoftirqd/1
   790 redis     20   0   51700   4536   3236 S   0.7   0.2   0:04.14 redis-server
     1 root      20   0  104124  11708   8400 S   0.0   0.6   0:02.56 systemd
     2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
     3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
     4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
     6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-kblockd
     9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
    10 root      20   0       0      0      0 S   0.0   0.0   0:00.28 ksoftirqd/0
[email protected]:/opt/k6# k6 run --vus 200 --duration 100s dobitdoze.js

          /\      |‾‾| /‾‾/   /‾‾/
     /\  /  \     |  |/  /   /  /
    /  \/    \    |     (   /   ‾‾\
   /          \   |  |\  \ |  (‾)  |
  / __________ \  |__| \__\ \_____/ .io

  execution: local
     script: dobitdoze.js
     output: -

  scenarios: (100.00%) 1 scenario, 200 max VUs, 2m10s max duration (incl. graceful stop):
           * default: 200 looping VUs for 1m40s (gracefulStop: 30s)


running (1m41.4s), 000/200 VUs, 14728 complete and 0 interrupted iterations
default ✓ [======================================] 200 VUs  1m40s

     data_received..................: 2.0 GB 19 MB/s
     data_sent......................: 3.8 MB 38 kB/s
     http_req_blocked...............: avg=3.13ms   min=170ns    med=361ns    max=260.99ms p(90)=551ns    p(95)=621ns
     http_req_connecting............: avg=1.26ms   min=0s       med=0s       max=97.5ms   p(90)=0s       p(95)=0s
     http_req_duration..............: avg=362.01ms min=349.17ms med=361.57ms max=847.1ms  p(90)=363.27ms p(95)=364.5ms
       { expected_response:true }...: avg=362.01ms min=349.17ms med=361.57ms max=847.1ms  p(90)=363.27ms p(95)=364.5ms
     http_req_failed................: 0.00%  ✓ 0          ✗ 14728
     http_req_receiving.............: avg=268.19ms min=174.67ms med=270.81ms max=544.26ms p(90)=271.91ms p(95)=272.39ms
     http_req_sending...............: avg=50.32µs  min=17.53µs  med=45.51µs  max=915.27µs p(90)=70.44µs  p(95)=83.87µs
     http_req_tls_handshaking.......: avg=1.79ms   min=0s       med=0s       max=157.64ms p(90)=0s       p(95)=0s
     http_req_waiting...............: avg=93.76ms  min=87.35ms  med=90.56ms  max=665.17ms p(90)=91.3ms   p(95)=91.85ms
     http_reqs......................: 14728  145.302003/s
     iteration_duration.............: avg=1.36s    min=1.34s    med=1.36s    max=2.1s     p(90)=1.36s    p(95)=1.36s
     iterations.....................: 14728  145.302003/s
     vus............................: 64     min=64       max=200
     vus_max........................: 200    min=200      max=200

Stress Test

top - 09:20:42 up 32 min,  1 user,  load average: 0.06, 0.11, 0.08
Tasks: 161 total,   3 running, 158 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.8 us,  2.5 sy,  0.0 ni, 86.2 id,  0.0 wa,  0.0 hi,  9.5 si,  0.0 st
MiB Mem :   1935.1 total,    614.6 free,    513.1 used,    807.3 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1215.3 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  5038 nobody    20   0   41908  26496   8716 S   5.7   1.3   0:24.90 litespeed
  5039 nobody    20   0   39696  23920   8540 R   5.3   1.2   0:24.07 litespeed
    10 root      20   0       0      0      0 S   0.3   0.0   0:01.27 ksoftirqd/0
   556 root      20   0    6444   3704   3484 S   0.3   0.2   0:00.87 qemu-ga
   669 redis     20   0   50188   4588   3284 S   0.3   0.2   0:02.31 redis-server
  5746 root      20   0    9256   3704   3156 R   0.3   0.2   0:00.06 top
     1 root      20   0  167496  11532   8360 S   0.0   0.6   0:01.80 systemd
     2 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kthreadd
     3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
     4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
     6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-kbloc+
[email protected]:/opt/k6# k6 run --vus 200 --duration 100s htbitdoze.js

          /\      |‾‾| /‾‾/   /‾‾/
     /\  /  \     |  |/  /   /  /
    /  \/    \    |     (   /   ‾‾\
   /          \   |  |\  \ |  (‾)  |
  / __________ \  |__| \__\ \_____/ .io

  execution: local
     script: htbitdoze.js
     output: -

  scenarios: (100.00%) 1 scenario, 200 max VUs, 2m10s max duration (incl. graceful stop):
           * default: 200 looping VUs for 1m40s (gracefulStop: 30s)


running (1m41.4s), 000/200 VUs, 14412 complete and 0 interrupted iterations
default ✓ [======================================] 200 VUs  1m40s

     data_received..................: 1.9 GB 19 MB/s
     data_sent......................: 4.5 MB 44 kB/s
     http_req_blocked...............: avg=3.6ms    min=140ns    med=351ns    max=289.26ms p(90)=521ns    p(95)=611ns
     http_req_connecting............: avg=1.42ms   min=0s       med=0s       max=108.62ms p(90)=0s       p(95)=0s
     http_req_duration..............: avg=395.37ms min=380.2ms  med=397.11ms max=574.81ms p(90)=406.78ms p(95)=413.78ms
       { expected_response:true }...: avg=395.37ms min=380.2ms  med=397.11ms max=574.81ms p(90)=406.78ms p(95)=413.78ms
     http_req_failed................: 0.00%  ✓ 0          ✗ 14412
     http_req_receiving.............: avg=295.29ms min=202.57ms med=297.76ms max=346.7ms  p(90)=306.03ms p(95)=312.44ms
     http_req_sending...............: avg=50.2µs   min=15.76µs  med=44.77µs  max=4.56ms   p(90)=72.82µs  p(95)=88.06µs
     http_req_tls_handshaking.......: avg=1.89ms   min=0s       med=0s       max=162.39ms p(90)=0s       p(95)=0s
     http_req_waiting...............: avg=100.02ms min=95.02ms  med=99.06ms  max=360.37ms p(90)=99.79ms  p(95)=100.33ms
     http_reqs......................: 14412  142.159372/s
     iteration_duration.............: avg=1.39s    min=1.38s    med=1.39s    max=1.86s    p(90)=1.4s     p(95)=1.41s
     iterations.....................: 14412  142.159372/s
     vus............................: 112    min=112      max=200
     vus_max........................: 200    min=200      max=200

As can be seen in the above tests the results are very similar on both servers, there wasn’t any major difference, both servers were capable of handling the load without issues. The response time was similar for both. So you will not go wrong with any of them, the only difference is the money and in case you will have an even bigger load the Hetzner VPS can handle more traffic.

Bonus Test For Digital Ocean

As the results for the tests with YABS for DigitalOcean regular shape I thought to test also an AMD NVNe shape with similar specifications 2 CPU and 2 GB of RAM, this shape is 18$ a month. I will only make this test as this is the most concluded one for server resources and in any case, WordPress tests were at a tie.

Below are the results:

[email protected]:~# curl -sL yabs.sh | bash
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2022-02-18                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Wed Mar  9 07:48:32 UTC 2022

Basic System Information:
---------------------------------
Processor  : DO-Premium-AMD
CPU cores  : 2 @ 1996.248 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM        : 1.9 GiB
Swap       : 0.0 KiB
Disk       : 58.1 GiB

fio Disk Speed Tests (Mixed R/W 50/50):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 136.79 MB/s  (34.1k) | 768.42 MB/s  (12.0k)
Write      | 137.15 MB/s  (34.2k) | 772.46 MB/s  (12.0k)
Total      | 273.95 MB/s  (68.4k) | 1.54 GB/s    (24.0k)
           |                      |
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 1.20 GB/s     (2.3k) | 1.23 GB/s     (1.2k)
Write      | 1.26 GB/s     (2.4k) | 1.31 GB/s     (1.2k)
Total      | 2.46 GB/s     (4.8k) | 2.54 GB/s     (2.4k)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed
                |                           |                 |
Clouvider       | London, UK (10G)          | 54.7 Mbits/sec  | 98.2 Mbits/sec
Online.net      | Paris, FR (10G)           | 1.89 Gbits/sec  | busy
WorldStream     | The Netherlands (10G)     | 1.85 Gbits/sec  | 2.36 Gbits/sec
WebHorizon      | Singapore (400M)          | 601 Mbits/sec   | 420 Mbits/sec
Clouvider       | NYC, NY, US (10G)         | 2.01 Gbits/sec  | 7.57 Gbits/sec
Velocity Online | Tallahassee, FL, US (10G) | 1.86 Gbits/sec  | 3.78 Gbits/sec
Clouvider       | Los Angeles, CA, US (10G) | 1.76 Gbits/sec  | 124 Mbits/sec
Iveloz Telecom  | Sao Paulo, BR (2G)        | 278 Mbits/sec   | 1.62 Gbits/sec

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value
                |
Single Core     | 710
Multi Core      | 1340
Full Test       | https://browser.geekbench.com/v5/cpu/13345264

As you can see in the above test the Premium AMD service that costs 18$ doesn’t beat Hetzner and with 5$ you can get a VPS that is more powerful than the DigitalOcean one.

Conclusion

From my tests and experience with Hetzner, they are a very good alternative to DigitalOcean. The prices and performance of their AMD VPS are superior to DigitalOcean. The only stop from my point of view is if you need a data center that Hetzner doesn’t have.

Both services are offering promotions in granting you credits so if you want to test them on your own you can use the bellow links (affiliate):

Similar Posts

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.