# Hetzner CPX22

[Helsinki DC Park 1](https://rackcensus.com/locations/helsinki-vps-benchmarks "Every provider in Helsinki")

Benchmark complete

Finished Oct 19, 2026

Geekbench 7 single-core

1,686

Geekbench 7 multi-core

3,239

Disk 4K IOPS

61,942

fio random read and write, 50/50

Monthly price at test time

$22.99

141 multi-core points per dollar

Same price today

## Server

[Hetzner](https://rackcensus.com/vps-providers/hetzner-benchmarks)[CPX22](https://rackcensus.com/plans/sa2c28-hetzner-cpx22-benchmarks?location=hel1)

-

Provider

Hetzner

-

Plan

CPX22

-

Location

Helsinki DC Park 1

-

vCPU

2

-

RAM

4 GB

-

Storage

80 GB NVMe

-

Network

Unknown

-

OS image

ubuntu-24.04

-

Trigger

Scheduled

-

Queued at

Oct 18, 2026, 17:05:00 UTC

[Visit Hetzner](https://rackcensus.com/go/hetzner)

## CPU

| Version | Single-core | Multi-core | Result link |
| --- | --- | --- | --- |
| Geekbench 7 | 1,686 | 3,239 | [Geekbench Browser](https://browser.geekbench.com/v7/cpu/667717) |

Scores from different Geekbench versions aren't comparable with each other. Charts only use Geekbench 7.

### Geekbench 7 workloads

| Workload | Single-core | Multi-core |
| --- | --- | --- |
| File Compression | 1,7193rd of 13 | 2,9103rd of 7 |
| Navigation | 1,7092nd of 13 | Single-core only |
| HTML5 Browser | 1,6503rd of 13 | Single-core only |
| PDF Viewer | 1,7163rd of 13 | Single-core only |
| Photo Library | 1,7333rd of 13 | 3,4263rd of 7 |
| Clang | 1,5283rd of 13 | 3,1014th of 7 |
| Text Processing | 1,5333rd of 13 | 2,9664th of 7 |
| Asset Compression | 1,6663rd of 13 | 3,3143rd of 7 |
| HDR | 1,7923rd of 13 | 3,1533rd of 7 |
| Photo Editor | 2,0563rd of 13 | 3,9843rd of 7 |
| Ray Tracer | 1,6013rd of 13 | 3,1704th of 7 |
| Structure from Motion | 1,7323rd of 13 | Single-core only |
| Game Physics | 1,6073rd of 13 | Single-core only |
| Video Encoder | 1,5963rd of 13 | Single-core only |
| Audio Encoder | 1,6863rd of 13 | Single-core only |
| Video Player | 1,7113rd of 13 | Single-core only |

Rank among the 13 runs with Geekbench 7 workload scores. Bars are relative to the best run. Geekbench doesn't run every workload multi-core, so some rows only have a single-core score.

## Disk

| Block size | Read | Write | Total |
| --- | --- | --- | --- |
| 4K | 120.8 MB/s (30,930 IOPS) | 121.1 MB/s (31,012 IOPS) | 242 MB/s (61,942 IOPS) |
| 64K | 1.33 GB/s (21,773 IOPS) | 1.34 GB/s (21,888 IOPS) | 2.66 GB/s (43,661 IOPS) |
| 512K | 1.38 GB/s (2,823 IOPS) | 1.45 GB/s (2,973 IOPS) | 2.83 GB/s (5,796 IOPS) |
| 1M | 1.6 GB/s (1,640 IOPS) | 1.71 GB/s (1,750 IOPS) | 3.31 GB/s (3,390 IOPS) |

fio random read and write, 50/50, run by YABS against the boot disk.

## Network

### IPv4 transfer speed

Loading...

| Target | Protocol | Send | Receive |
| --- | --- | --- | --- |
| Eranium, Amsterdam, NL (100G) | IPv4 | 6.69 Gbps | 2.56 Gbps |
| Leaseweb, NYC, NY, US (10G) | IPv4 | 1.91 Gbps | 2.33 Gbps |
| Leaseweb, Singapore, SG (10G) | IPv4 | 967 Mbps | 1.25 Gbps |

Public iperf3 servers vary in capacity and availability. Compare a target only with itself over time.

## Application workloads

### PostgreSQL transactions
Failed

Durable transfers and indexed account lookups against a fixed relational dataset.

HTTPError: HTTP Error 404: Not Found

p95 ≤ 50 ms · p99 ≤ 100 ms · errors ≤ 1.0%

### PostgreSQL large dataset
Failed

The same transaction mix against ten million accounts; the dataset never shrinks to fit a plan.

URLError: \<urlopen error [Errno 111] Connection refused\>

p95 ≤ 100 ms · p99 ≤ 250 ms · errors ≤ 1.0%

### Redis cache
Failed

A mixed cache workload with 1 KiB values, expiration, misses and eviction.

HTTPError: HTTP Error 404: Not Found

p95 ≤ 10 ms · p99 ≤ 25 ms · errors ≤ 1.0%

### Redis persistent queue
Failed

Enqueue, consume and acknowledge payloads with append-only persistence.

HTTPError: HTTP Error 404: Not Found

p95 ≤ 20 ms · p99 ≤ 50 ms · errors ≤ 1.0%

### Discourse community
Measured

Signed-in reading, search, posting and replies in a populated Rails forum.

Discourse community measurements| Repeat | Offered / s | journeys/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 2 | 1.96 | 214.55 / 301.32 | 8 / 0 | error limit exceeded |
| 1 | 5 | 4.69 | 182.82 / 313.6 | 56 / 0 | error limit exceeded |
| 1 | 10 | 9.19 | 167.08 / 264.64 | 146 / 0 | error limit exceeded |
| 1 | 25 | 22.68 | 1180.67 / 1278.58 | 416 / 0 | error limit exceeded |
| 2 | 2 | 1.96 | 234.74 / 319.92 | 8 / 0 | error limit exceeded |
| 2 | 5 | 4.69 | 198.05 / 304.34 | 56 / 0 | error limit exceeded |
| 2 | 10 | 9.19 | 162.13 / 262.01 | 146 / 0 | error limit exceeded |
| 2 | 25 | 22.67 | 406.48 / 599.68 | 419 / 0 | error limit exceeded |

p95 ≤ 1500 ms · p99 ≤ 3000 ms · errors ≤ 1.0%

### n8n workflows
Measured

Webhook, transformation, branching and a verified final response.

n8n workflows measurements| Repeat | Offered / s | workflows/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 5 | 5 | 32.87 / 39.51 | 0 / 0 | Met workload limits |
| 1 | 20 | 20 | 28.17 / 31.87 | 0 / 0 | Met workload limits |
| 1 | 50 | 50 | 27.03 / 37.93 | 0 / 0 | Met workload limits |
| 1 | 100 | 91.08 | 3040.08 / 3101.2 | 0 / 1456 | latency limit exceeded |
| 2 | 5 | 5 | 33.2 / 39.91 | 0 / 0 | Met workload limits |
| 2 | 20 | 20 | 27.88 / 32.2 | 0 / 0 | Met workload limits |
| 2 | 50 | 50 | 25.94 / 40.74 | 0 / 0 | Met workload limits |
| 2 | 100 | 90.88 | 3040.08 / 3101.2 | 0 / 1455 | latency limit exceeded |

p95 ≤ 1000 ms · p99 ≤ 2000 ms · errors ≤ 1.0%

### n8n queue workers
Measured

Completed queued workflows including waiting time and worker execution.

n8n queue workers measurements| Repeat | Offered / s | workflows/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 5 | 5 | 44.19 / 50.95 | 0 / 0 | Met workload limits |
| 1 | 20 | 20 | 36.04 / 43.3 | 0 / 0 | Met workload limits |
| 1 | 50 | 50 | 36.04 / 81.1 | 0 / 0 | Met workload limits |
| 1 | 100 | 87.4 | 3132.22 / 3195.2 | 0 / 2062 | latency limit exceeded |
| 2 | 5 | 5 | 43.75 / 51.99 | 0 / 0 | Met workload limits |
| 2 | 20 | 20 | 36.41 / 42 | 0 / 0 | Met workload limits |
| 2 | 50 | 50 | 39.11 / 102.22 | 0 / 0 | Met workload limits |
| 2 | 100 | 84.64 | 3259.45 / 3494.64 | 0 / 2535 | latency limit exceeded |

p95 ≤ 2000 ms · p99 ≤ 4000 ms · errors ≤ 1.0%

### Ghost publishing
Measured

Readers, authenticated draft creation, publishing and image uploads.

Ghost publishing measurements| Repeat | Offered / s | journeys/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 5 | 5 | 336.29 / 390.58 | 0 / 0 | Met workload limits |
| 1 | 20 | 20 | 367.89 / 414.67 | 0 / 0 | Met workload limits |
| 1 | 50 | 43.79 | 7013.92 / 7013.92 | 883 / 0 | latency limit exceeded |
| 1 | 100 | 50.72 | 7013.92 / 7013.92 | 975 / 7577 | latency limit exceeded |
| 2 | 5 | 5 | 336.29 / 398.45 | 0 / 0 | Met workload limits |
| 2 | 20 | 20 | 364.24 / 427.27 | 0 / 0 | Met workload limits |
| 2 | 50 | 43.69 | 7013.92 / 7013.92 | 882 / 0 | latency limit exceeded |
| 2 | 100 | 51.15 | 7013.92 / 7013.92 | 978 / 7539 | latency limit exceeded |

p95 ≤ 1000 ms · p99 ≤ 2000 ms · errors ≤ 1.0%

### Formbricks / Next.js
Failed

Public survey rendering, persisted responses and authenticated analysis.

RuntimeError: RuntimeError: TimeoutError:

p95 ≤ 1000 ms · p99 ≤ 2000 ms · errors ≤ 1.0%

### Elasticsearch search and ingestion
Measured

Full-text search, filtering and aggregations while new documents are indexed.

Elasticsearch search and ingestion measurements| Repeat | Offered / s | operations/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 10 | 10 | 12.42 / 16.39 | 0 / 0 | Met workload limits |
| 1 | 50 | 50 | 10.33 / 14.43 | 0 / 0 | Met workload limits |
| 1 | 100 | 100 | 9.26 / 13.98 | 0 / 0 | Met workload limits |
| 1 | 250 | 250 | 9.26 / 14.28 | 0 / 0 | Met workload limits |
| 2 | 10 | 10 | 12.69 / 16.74 | 0 / 0 | Met workload limits |
| 2 | 50 | 50 | 10.22 / 14.58 | 0 / 0 | Met workload limits |
| 2 | 100 | 100 | 9.06 / 13.39 | 0 / 0 | Met workload limits |
| 2 | 250 | 250 | 9.57 / 14.74 | 0 / 0 | Met workload limits |

p95 ≤ 250 ms · p99 ≤ 500 ms · errors ≤ 1.0%

### GitHub self-hosted runner
Insufficient RAM

A pinned build and test workflow with separate cold and warm dependency caches.

Requires 8192 MiB RAM; plan has 4096 MiB, 3814 MiB detected.

p95 ≤ 3600000 ms · p99 ≤ 3600000 ms · errors ≤ 1.0%

### Odoo Community sales
Failed

Customer lookup, sales order confirmation, stock operations and reporting.

RuntimeError: fixture command in rc-odoo failed: -packages/odoo/cli/shell.py", line 148, in shell self.console(local\_vars) File "/usr/lib/python3/dist-packages/odoo/cli/shell.py", line 82, in console exec(sys.stdin.read(), local\_vars) File "\<string\>", line 1, in \<module\> PermissionError: [Errno 13] Permission denied: '/tmp/rc-seed.py'

p95 ≤ 2000 ms · p99 ≤ 4000 ms · errors ≤ 1.0%

## Advertised vs. measured

| Spec | Advertised | Measured |
| --- | --- | --- |
| vCPU | 2 | 2 |
| CPU | Shared vCPU | 0% of busy CPU time stolen |
| RAM | 4 GB | 3.7 GiB |
| Storage | 80 GB NVMe | 75 GiB |
| Architecture | x86\_64 | x86\_64 |
| Virtualization | KVM | KVM |

Guests usually report slightly less RAM and disk than advertised because of kernel reservations and filesystem overhead.

## Detected hardware

**CPU model:** AMD EPYC-Genoa Processor

**CPU cores:** 2

**CPU frequency:** 2400 MHz

**AES-NI:** Yes

**VM-x/AMD-V:** No

**RAM reported:** 3.7 GiB

**Swap reported:** 0 MiB

**Disk reported:** 75 GiB

**Virtualization reported:** KVM

**CPU steal:** 0% of busy CPU time stolen

**Distro:** Ubuntu 24.04.3 LTS

**Kernel:** 6.8.0-90-generic

**Architecture:** x86\_64

**IPv4 reachable:** Yes

**IPv6 reachable:** Yes

## Advertised at test time

**Plan:** CPX22

**Product line:** regular\_purpose

**Location:** Helsinki DC Park 1

**vCPU:** 2 shared vCPU

**Architecture:** x86\_64

**RAM:** 4 GB

**Storage:** 80 GB NVMe

**Virtualization:** KVM

**Network:** Unknown

**Transfer:** 21.99 TB

**Port 25:** On request

**Monthly price at test time:** $22.99

**Hourly price at test time:** $0.037

**YABS version:** v2026-09-20

**Ran at:** Oct 19, 2026, 05:46:52 UTC

**Parser version:** 5

## Run timeline

**Queued:** Oct 18, 2026, 17:05:00 UTC

**Server created:** Oct 19, 2026, 05:46:46 UTC

**First update from the server:** Oct 19, 2026, 05:46:46 UTC

**Completed:** Oct 19, 2026, 09:28:45 UTC

**Server deleted:** Oct 19, 2026, 09:28:45 UTC

**Cost of this run:** $0.14

Tests 44 of 50 done Live output 1061 lines

Setup 2 cores, 3.7 GiB RAM 4 of 4Done

Disk (fio) 254 MB/s at 4k, 3.55 GB/s at 1m 5 of 5Done

Network, IPv4 (iperf3) Median 1.91 Gbit/s send, 2.33 Gbit/s receive, 1 retried 3 of 3Done

Geekbench 7, single-core Score 1,686 17 of 17Done

Geekbench 7, multi-core Score 3,239 9 of 9Done

Web apps 6 failed, 1 skipped 5 of 11Some failed

TestResultTime

PostgreSQL transactions HTTPError: HTTP Error 404: Not Found Stopped HTTPError: HTTP Error 404: Not Found 21m 55s

PostgreSQL large dataset URLError: \<urlopen error [Errno 111] Connection refused\> Stopped URLError: \<urlopen error [Errno 111] Connection refused\> 1m 21s

Redis cache HTTPError: HTTP Error 404: Not Found Stopped HTTPError: HTTP Error 404: Not Found 51s

Redis persistent queue HTTPError: HTTP Error 404: Not Found Stopped HTTPError: HTTP Error 404: Not Found 19s

Discourse community 8 measured trials completed 8 trials Measurements, 8 measured trials completed 35m 21s

n8n workflows 8 measured trials completed 8 trials Measurements, 8 measured trials completed 30m 54s

n8n queue workers 8 measured trials completed 8 trials Measurements, 8 measured trials completed 30m 45s

Ghost publishing 8 measured trials completed 8 trials Measurements, 8 measured trials completed 33m 15s

Formbricks / Next.js RuntimeError: RuntimeError: TimeoutError: Stopped RuntimeError: RuntimeError: TimeoutError: 21m 19s

Elasticsearch search and ingestion 8 measured trials completed 8 trials Measurements, 8 measured trials completed 33m 04s

GitHub self-hosted runner Requires 8192 MiB RAM; plan has 4096 MiB, 3814 MiB detected. Not run Requires 8192 MiB RAM; plan has 4096 MiB, 3814 MiB detected.

Odoo Community sales Application workloads Stopped RuntimeError: fixture command in rc-odoo failed: -packages/odoo/cli/shell.py", line 148, in shell self.console(local\_vars) File "/usr/lib/python3/dist-packages/odoo/cli/shell.py", line 82, in console exec(sys.stdin.read(), local\_vars) File "\<string\>", line 1, in \<module\> PermissionError: [Errno 13] Permission denied: '/tmp/rc-seed.py' 1m 41s

Finish Results saved 1 of 1Done

Watch party 0 watching

This party closed at 10:28 UTC. It's read only now.

## Watch party

Loading the party
