Hetzner Cloud Review: The Unexpected Winner in Cloud Hosting

I am using Hetzner as my VPS provider in Europe for more than 2 years. I have a CyberPanel server installed where I host some of my sites. Recently Hetzner has released a US data center and you can create a VPS in Ashburn.

Hetzner has some very affordable prices when it comes to VPS and in this article/ video, I would like to make a review of Hetzner to see how it does in hosting my WordPress websites on their cloud VPS servers. If you are interested to see how Hetzner is comparing with DigitalOcean you should see: DigitalOcean VS Hetzner: Which is The Best VPS Provider

I am using VPS providers for a long time to host some of the websites and applications and I always look for something that is good and has a decent price as my budget is not that high. Hetzner has very good prices if you compare it with others like DigitalOcean or Vultr, on Hetzner with about 5$ you can get 2CPU 2 GB of RAM which doesn’t come close to 15 – 20 USD price at the others.

I have CyberPanel installed to host my websites and a monitoring website + a Google Analytics alternative installed on a Hetzner VPS, you can check also the below articles if you want:

In this Hetzner Review, we will focus on the Cloud VPS area as Hetzner like the other has a lot to offer.

Hetzner Cloud Review

Datacenters

When it comes to data centers with Hetzner you have EU and USA only. In the EU you have Germany and Finland and in the USA Ashburn. This is what is Hetzner is offering in terms of data centers, if you need rather locations you need to go with another service. The USA data centers is only having AMD CPUs also.

Pricing

Hetzner pricing is a very competitive one you can start with prices from 5$ for a 2 CPU 2 GB of RAM server and you can go up to 60$ for a server with 16 CPU and 32 GB of RAM. The CPU is shared but if you need a dedicated one they have you covered and you can start with about 25$ for a 2 CPU and 8 GB of RAM and you can move to hundred of USD for a bigger one:

Interface

The interface is easy to use and clean in the left side you have the options like server, storage, firewall etc. And in the middle, you have your server. You can easily add a server and have access to its details. Below/ are some pictures of the interface and what it looks like. You can enable backups, stop the server, scale it,etc. Server graphs are also there with CPU, memory, network traffic.

Performance

I am using Hetzner for more than 2 years and I never had an issue with my website because of their fault, we are going to test the lowes option from them the Ashburn AMD 2 CPU 2 GB of memory to see how it does from a performance perspective.

VPS YABS Bench Test

We are going to use YABS to test the disk, CPU, and network. Below are the results of this tool, and you will see that the results are quite good if you think this is a 5 USD VPS:

[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

WordPress Website Speed Test

I have installed WordPress on the test site and imported a Kadence starter template with a blog and everything. Then I have configured the lightspeed cache plugin and that’s all that I did. Below are the results with these basic things:

These are good results if you think that we didn’t add a CDN or optimize the images in any way. With advanced optimizations, better scores can be obtained. Results are much better than shared hosting and you pay less.

Next, we are going to do some load tests to see how the server is doing under load stress. We are going to use k6 to perform these load tests. We are going to use 200 visitors at the same time to see how these server is doing, we are going to test the home page.

Top on Server:

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+

We see here that the server didn’t even notice the 200 visitors at the same time.

k6 results:

[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

In the above results, you see the test from a server in the EU. So k6 was run from the EU and you can see that there were no failed requests and the average response time is 1.39s. Hetzner server is doing a very good job with 200 visitors at the same time.

This is happening because CyberPanel is a very good option to use for your websites and also because Hetzner has good servers.

Support

I only needed to contact Hetzner support 1 time and their response and solution were fast. Like any other service, you have a dedicated support tab that you can use and submit tickets to them. They are communicative and fix your problems, I didn’t need any advance technical requests done to them so I can’t say 100% that they are OK. If you have any experience with Hetzner support you can drop a comment below so others know.

Hetzner Alternatives

There are a lot of VPS providers out there, some of the most known ones are DigitalOcean, Vultr, or Linode. They are top of the line when it comes to having your own VPS with very good performances. For digitalocean you can check DigitalOcean Review to find out more. Hetzner is the most affordable one though.

Conclusions

This is what Hetzner has to offer my experience with them was good and in 2 years I didn’t have any major issues with them. I was happy when I have seen they released a data center in US as I can use it also there if I need it. Their prices are very good and their performance is good. If you have big sites you can use a bigger VPS from them at very good prices.

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.