# Hetzner CCX13

Hillsboro, OR

Benchmark complete

Finished Oct 22, 2026

Geekbench 7 single-core

1,862

Faster than 96% of 2 vCPU plans

Geekbench 7 multi-core

2,426

Faster than 71% of 2 vCPU plans

Disk 4K IOPS

145,898

fio random read and write, 50/50

Monthly price at test time

$50.99

48 multi-core points per dollar

Same price today

## Server

[Hetzner](https://rackcensus.com/vps-providers/hetzner-benchmarks)[CCX13](https://rackcensus.com/plans/oe8cpl-hetzner-ccx13-benchmarks?location=hil)

-

Provider

Hetzner

-

Plan

CCX13

-

Location

Hillsboro, OR

-

vCPU

2

-

RAM

8 GB

-

Storage

80 GB NVMe

-

Network

Unknown

-

OS image

ubuntu-24.04

-

Trigger

Scheduled

-

Queued at

Oct 21, 2026, 05:40:00 UTC

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

## Latest runs of this plan

- [Ashburn, VA Oct 21, 2026](https://rackcensus.com/benchmarks/xk2u73-hetzner-ccx13-ash-benchmark)1,315

[Full history of this plan](https://rackcensus.com/plans/oe8cpl-hetzner-ccx13-benchmarks/history)

## CPU

| Version | Single-core | Multi-core | Result link |
| --- | --- | --- | --- |
| Geekbench 7 | 1,862 | 2,426 | [Geekbench Browser](https://browser.geekbench.com/v7/cpu/694553) |

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,8075th of 64 | 2,55818th of 36 |
| Navigation | 1,6335th of 64 | Single-core only |
| HTML5 Browser | 1,9565th of 64 | Single-core only |
| PDF Viewer | 2,0855th of 64 | Single-core only |
| Photo Library | 1,6908th of 64 | 2,29021st of 36 |
| Clang | 1,6534th of 64 | 2,39220th of 36 |
| Text Processing | 1,8434th of 64 | 2,21520th of 36 |
| Asset Compression | 1,9006th of 64 | 2,53520th of 36 |
| HDR | 1,8245th of 64 | 2,26719th of 36 |
| Photo Editor | 2,1916th of 64 | 2,56321st of 36 |
| Ray Tracer | 1,6774th of 64 | 2,62220th of 36 |
| Structure from Motion | 1,9066th of 64 | Single-core only |
| Game Physics | 1,8055th of 64 | Single-core only |
| Video Encoder | 1,9593rd of 64 | Single-core only |
| Audio Encoder | 1,8055th of 64 | Single-core only |
| Video Player | 2,1764th of 64 | Single-core only |

Rank among the 64 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 | 284.6 MB/s (72,853 IOPS) | 285.3 MB/s (73,045 IOPS) | 569.9 MB/s (145,898 IOPS) |
| 64K | 2.37 GB/s (38,907 IOPS) | 2.39 GB/s (39,111 IOPS) | 4.76 GB/s (78,018 IOPS) |
| 512K | 4.58 GB/s (9,388 IOPS) | 4.83 GB/s (9,887 IOPS) | 9.41 GB/s (19,275 IOPS) |
| 1M | 5.41 GB/s (5,536 IOPS) | 5.77 GB/s (5,905 IOPS) | 11.17 GB/s (11,441 IOPS) |

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

## Network

### IPv4 transfer speed

Loading...

| Target | Protocol | Send | Receive |
| --- | --- | --- | --- |
| Clouvider, Los Angeles, CA, US (10G) | IPv4 | 4.82 Gbps | 7.48 Gbps |
| Clouvider, London, UK (10G) | IPv4 | 1.17 Gbps | 1.26 Gbps |
| Leaseweb, Singapore, SG (10G) | IPv4 | 826 Mbps | 1.14 Gbps |

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

## Application workloads

### PostgreSQL transactions
Measured

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

PostgreSQL transactions measurements| Repeat | Offered / s | transactions/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 100 | 100 | 4.48 / 5.12 | 0 / 0 | Met workload limits |
| 1 | 500 | 498.22 | 3.23 / 4.01 | 0 / 320 | Met workload limits |
| 1 | 1000 | 994.89 | 3.27 / 3.91 | 0 / 919 | Met workload limits |
| 1 | 3000 | 2985.37 | 3.19 / 3.72 | 0 / 2631 | Met workload limits |
| 2 | 100 | 100 | 4.48 / 5.06 | 0 / 0 | Met workload limits |
| 2 | 500 | 498.03 | 3.23 / 3.96 | 0 / 355 | Met workload limits |
| 2 | 1000 | 994.96 | 3.32 / 4.32 | 0 / 907 | Met workload limits |
| 2 | 3000 | 2984.59 | 3.23 / 3.82 | 0 / 2770 | Met workload limits |

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

### PostgreSQL large dataset
Measured

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

PostgreSQL large dataset measurements| Repeat | Offered / s | transactions/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 100 | 100 | 5.76 / 6.77 | 0 / 0 | Met workload limits |
| 1 | 500 | 498.33 | 3.91 / 4.76 | 0 / 300 | Met workload limits |
| 1 | 1000 | 993.93 | 3.82 / 5.06 | 0 / 1091 | Met workload limits |
| 2 | 100 | 100 | 5.76 / 6.69 | 0 / 0 | Met workload limits |
| 2 | 500 | 498.29 | 3.96 / 5 | 0 / 308 | Met workload limits |
| 2 | 1000 | 994.58 | 3.77 / 4.82 | 0 / 974 | Met workload limits |

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

### Redis cache
Measured

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

Redis cache measurements| Repeat | Offered / s | operations/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 1000 | 999.99 | 1.42 / 1.57 | 0 / 0 | Met workload limits |
| 1 | 5000 | 4999.98 | 1.28 / 1.52 | 0 / 0 | Met workload limits |
| 1 | 10000 | 9999.92 | 1.47 / 1.63 | 0 / 4 | Met workload limits |
| 1 | 25000 | 24891.57 | 2.05 / 12.03 | 0 / 19505 | load generator saturated |
| 2 | 1000 | 1000 | 1.42 / 1.6 | 0 / 0 | Met workload limits |
| 2 | 5000 | 4999.98 | 1.28 / 1.52 | 0 / 0 | Met workload limits |
| 2 | 10000 | 9999.94 | 1.47 / 1.63 | 0 / 3 | Met workload limits |
| 2 | 25000 | 24909.11 | 1.99 / 11.15 | 0 / 16327 | load generator saturated |

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

### Redis persistent queue
Measured

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

Redis persistent queue measurements| Repeat | Offered / s | jobs/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 100 | 100 | 3.49 / 3.82 | 0 / 0 | Met workload limits |
| 1 | 500 | 500 | 2.3 / 2.57 | 0 / 0 | Met workload limits |
| 1 | 1000 | 1000 | 2.37 / 2.72 | 0 / 0 | Met workload limits |
| 1 | 3000 | 2999.98 | 2.33 / 2.65 | 0 / 0 | Met workload limits |
| 2 | 100 | 100 | 3.45 / 3.82 | 0 / 0 | Met workload limits |
| 2 | 500 | 500 | 2.3 / 2.72 | 0 / 0 | Met workload limits |
| 2 | 1000 | 1000 | 2.3 / 2.65 | 0 / 0 | Met workload limits |
| 2 | 3000 | 2999.98 | 2.33 / 2.65 | 0 / 0 | Met workload limits |

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

### Discourse community
Failed

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

RuntimeError: RuntimeError: ValueError: GET /session/csrf returned HTTP 503

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 | 19.19 / 28.17 | 0 / 0 | Met workload limits |
| 1 | 20 | 20 | 16.04 / 22.44 | 0 / 0 | Met workload limits |
| 1 | 50 | 50 | 13.98 / 20.64 | 0 / 0 | Met workload limits |
| 1 | 100 | 100 | 158.92 / 349.99 | 0 / 0 | Met workload limits |
| 2 | 5 | 5 | 19.39 / 24.89 | 0 / 0 | Met workload limits |
| 2 | 20 | 20 | 15.88 / 27.03 | 0 / 0 | Met workload limits |
| 2 | 50 | 49.98 | 14.13 / 22.67 | 0 / 0 | Met workload limits |
| 2 | 100 | 100 | 1265.91 / 1426.59 | 0 / 0 | 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 | 29.05 / 43.3 | 0 / 0 | Met workload limits |
| 1 | 20 | 20 | 23.63 / 44.19 | 0 / 0 | Met workload limits |
| 1 | 50 | 50 | 96.24 / 769.33 | 0 / 0 | Met workload limits |
| 1 | 100 | 65.1 | 4264.34 / 4437.53 | 0 / 6057 | latency limit exceeded |
| 2 | 5 | 5 | 28.46 / 38.71 | 0 / 0 | Met workload limits |
| 2 | 20 | 20 | 23.15 / 38.32 | 0 / 0 | Met workload limits |
| 2 | 50 | 50 | 49.42 / 165.41 | 0 / 0 | Met workload limits |
| 2 | 100 | 70.25 | 4017.15 / 4222.11 | 0 / 5146 | 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 | 256.83 / 343.07 | 0 / 0 | Met workload limits |
| 1 | 20 | 20 | 280.98 / 298.33 | 0 / 0 | Met workload limits |
| 1 | 50 | 43.57 | 7013.92 / 7013.92 | 891 / 4 | latency limit exceeded |
| 1 | 100 | 46.89 | 7013.92 / 7013.92 | 896 / 8387 | latency limit exceeded |
| 2 | 5 | 5 | 249.24 / 336.29 | 0 / 0 | Met workload limits |
| 2 | 20 | 20 | 275.42 / 286.65 | 0 / 0 | Met workload limits |
| 2 | 50 | 43.54 | 7013.92 / 7013.92 | 888 / 18 | latency limit exceeded |
| 2 | 100 | 46.82 | 7013.92 / 7013.92 | 910 / 8368 | 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 | 8.48 / 10.8 | 0 / 0 | Met workload limits |
| 1 | 50 | 50 | 6.24 / 8.29 | 0 / 0 | Met workload limits |
| 1 | 100 | 100 | 5.43 / 7.84 | 0 / 0 | Met workload limits |
| 1 | 250 | 250 | 5.06 / 7.66 | 0 / 0 | Met workload limits |
| 2 | 10 | 10 | 8.48 / 11.65 | 0 / 0 | Met workload limits |
| 2 | 50 | 50 | 6.1 / 8.11 | 0 / 0 | Met workload limits |
| 2 | 100 | 100 | 5.3 / 7.24 | 0 / 0 | Met workload limits |
| 2 | 250 | 250 | 4.88 / 7.58 | 0 / 0 | Met workload limits |

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

### GitHub self-hosted runner
Failed

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

ValueError: set RUNNER\_BENCHMARK\_REPOSITORY and RUNNER\_BENCHMARK\_REVISION to the repository and commit hosting benchmark-runner.yml

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 | Dedicated vCPU | 0% of busy CPU time stolen |
| RAM | 8 GB | 7.6 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-Milan Processor

**CPU cores:** 2

**CPU frequency:** 2297 MHz

**AES-NI:** Yes

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

**RAM reported:** 7.6 GiB

**Swap reported:** 0 MiB

**Disk reported:** 75 GiB

**Virtualization reported:** KVM

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

**Distro:** Ubuntu 24.04.4 LTS

**Kernel:** 6.8.0-139-generic

**Architecture:** x86\_64

**IPv4 reachable:** Yes

**IPv6 reachable:** Yes

## Advertised at test time

**Plan:** CCX13

**Product line:** general\_purpose

**Location:** Hillsboro, OR

**vCPU:** 2 dedicated vCPU

**Architecture:** x86\_64

**RAM:** 8 GB

**Storage:** 80 GB NVMe

**Virtualization:** KVM

**Network:** Unknown

**Transfer:** 21.99 TB

**Port 25:** On request

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

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

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

**Ran at:** Oct 22, 2026, 16:08:45 UTC

**Parser version:** 5

## Run timeline

**Queued:** Oct 21, 2026, 05:40:00 UTC

**Server created:** Oct 22, 2026, 16:08:29 UTC

**First update from the server:** Oct 22, 2026, 16:08:29 UTC

**Completed:** Oct 22, 2026, 20:59:51 UTC

**Server deleted:** Oct 22, 2026, 20:59:51 UTC

**Cost of this run:** $0.40

Tests 47 of 51 done Live output 1421 lines

Setup 2 cores, 7.6 GiB RAM 4 of 4Done

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

Network, IPv4 (iperf3) Median 1.17 Gbit/s send, 1.26 Gbit/s receive 3 of 3Done

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

Geekbench 7, multi-core Score 2,426 9 of 9Done

Web apps 4 failed 8 of 12Some failed

TestResultTime

PostgreSQL transactions 8 measured trials completed 8 trials Measurements, 8 measured trials completed 29m 23s

PostgreSQL large dataset 6 measured trials completed 6 trials Measurements, 6 measured trials completed 31m 43s

Redis cache 8 measured trials completed 8 trials Measurements, 8 measured trials completed 28m 28s

Redis persistent queue 8 measured trials completed 8 trials Measurements, 8 measured trials completed 28m 20s

Discourse community RuntimeError: RuntimeError: ValueError: GET /session/csrf returned HTTP 503 Stopped RuntimeError: RuntimeError: ValueError: GET /session/csrf returned HTTP 503 14m 53s

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

n8n queue workers 8 measured trials completed 8 trials Measurements, 8 measured trials completed 31m 07s

Ghost publishing 8 measured trials completed 8 trials Measurements, 8 measured trials completed 32m 00s

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

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

GitHub self-hosted runner ValueError: set RUNNER\_BENCHMARK\_REPOSITORY and RUNNER\_BENCHMARK\_REVISION to the repository and commit hosting benchmark-runner.yml Stopped ValueError: set RUNNER\_BENCHMARK\_REPOSITORY and RUNNER\_BENCHMARK\_REVISION to the repository and commit hosting benchmark-runner.yml 0s

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 05s

Finish Results saved 1 of 1Done

Watch party 0 watching

This party closed at 21:59 UTC. It's read only now.

## Watch party

Loading the party
