Skip to main content

Hetzner CX23

Falkenstein DC Park 1

Benchmark complete
Finished Oct 15, 2026
Geekbench 7 single-core
1,174
Faster than 54% of 2 vCPU plans
Geekbench 7 multi-core
2,212
Faster than 52% of 2 vCPU plans
Disk 4K IOPS
46,317
fio random read and write, 50/50
Monthly price at test time
$6.49
341 multi-core points per dollar
Same price today

Server

  • Provider
    Hetzner
  • Plan
    CX23
  • Location
    Falkenstein DC Park 1
  • vCPU
    2
  • RAM
    4 GB
  • Storage
    40 GB NVMe
  • Network
    Unknown
  • OS image
    ubuntu-24.04
  • Trigger
    Scheduled
  • Queued at
    Oct 15, 2026, 10:43:00 UTC

CPU

Version Single-core Multi-core Result link
Geekbench 7 1,174 2,212 Geekbench Browser

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,327
91st of 191
2,122
86th of 135
Navigation
1,095
132nd of 191
Single-core only
HTML5 Browser
1,130
95th of 191
Single-core only
PDF Viewer
1,306
94th of 191
Single-core only
Photo Library
1,144
88th of 191
2,311
75th of 135
Clang
987
124th of 191
1,884
96th of 135
Text Processing
1,069
98th of 191
2,017
86th of 135
Asset Compression
1,192
104th of 191
2,475
81st of 135
HDR
1,164
86th of 191
2,197
81st of 135
Photo Editor
1,439
78th of 191
2,775
61st of 135
Ray Tracer
990
126th of 191
2,039
95th of 135
Structure from Motion
1,381
88th of 191
Single-core only
Game Physics
1,076
109th of 191
Single-core only
Video Encoder
1,112
107th of 191
Single-core only
Audio Encoder
1,301
84th of 191
Single-core only
Video Player
1,191
106th of 191
Single-core only

Rank among the 191 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.

Memory, TLS and scheduler

Memory bandwidth (STREAM)

Test Result Runs Spread
Copy higher is better 39.2 GB/s 3 0.972%
Scale higher is better 26.3 GB/s 3 0.866%
Add higher is better 27.9 GB/s 3 4.58%
Triad higher is better 28.4 GB/s 3 3.23%

Average of 3 runs. Spread is the standard deviation as a share of the average.

TLS and crypto (OpenSSL)

Test Result Runs Spread
RSA 4096 signs higher is better 399/s 3 0.78%
RSA 4096 verifies higher is better 25,511/s 3 2.96%
SHA-256 higher is better 1.48 GB/s 3 1.16%
AES-256-GCM higher is better 6.72 GB/s 3 2.51%
ChaCha20-Poly1305 higher is better 4.14 GB/s 3 0.615%

Average of 3 runs. Spread is the standard deviation as a share of the average.

Scheduler latency (schbench)

Test Result Runs Spread
Request latency, median lower is better 5.12 ms 3 0.65%
Requests per second, 90th percentile higher is better 376/s 3 1.26%
Request latency, 99.9th percentile lower is better 12.6 ms 3 2.06%
Requests per second, average higher is better 361/s 3 1.98%

Average of 3 runs. Spread is the standard deviation as a share of the average.

Disk

Block size Read Write Total
4K 90.3 MB/s (23,128 IOPS) 90.6 MB/s (23,189 IOPS) 180.9 MB/s (46,317 IOPS)
64K 875.5 MB/s (14,008 IOPS) 880.1 MB/s (14,082 IOPS) 1.71 GB/s (28,090 IOPS)
512K 1.29 GB/s (2,645 IOPS) 1.36 GB/s (2,786 IOPS) 2.65 GB/s (5,431 IOPS)
1M 1.47 GB/s (1,508 IOPS) 1.57 GB/s (1,608 IOPS) 3.04 GB/s (3,116 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, London, UK (10G) IPv4 6.73 Gbps 7.38 Gbps
Eranium, Amsterdam, NL (100G) IPv4 2.8 Gbps 3.54 Gbps
Leaseweb, Singapore, SG (10G) IPv4 1.07 Gbps 1.41 Gbps
Clouvider, Los Angeles, CA, US (10G) IPv4 896 Mbps 1.2 Gbps
Leaseweb, NYC, NY, US (10G) IPv4 1.96 Gbps 2.58 Gbps

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

Datastores

PostgreSQL

fsync speed (pg_test_fsync)

Method Operations per second Time per operation
One 8 kB write
open_datasync 3,187 0.314 ms
fdatasync 2,956 0.338 ms
fsync 1,528 0.655 ms
fsync_writethrough Not supported here n/a
open_sync 1,590 0.629 ms
Two 8 kB writes
open_datasync 1,564 0.64 ms
fdatasync 2,982 0.335 ms
fsync 1,346 0.743 ms
fsync_writethrough Not supported here n/a
open_sync 679 1.47 ms
open_sync at different write sizes
1 * 16kB open_sync write 1,318 0.759 ms
2 * 8kB open_sync writes 743 1.35 ms
4 * 4kB open_sync writes 409 2.44 ms
8 * 2kB open_sync writes 193 5.17 ms
16 * 1kB open_sync writes 102 9.78 ms
fsync on a non-write descriptor
write, fsync, close 1,503 0.665 ms
write, close, fsync 1,432 0.698 ms
Non-synced 8 kB writes
write 1,206,817 0.001 ms

pg_test_fsync against the Docker volume Postgres keeps its data on. fdatasync is Linux's default wal_sync_method.

pgbench at scale 10

Workload Clients Transactions/s Median p95 p99 p99.9 Failed
Read/write (TPC-B like) 1 1,107 0.869 ms 1.16 ms 1.69 ms 3.78 ms 0
Read/write (TPC-B like) 8 3,672 1.97 ms 3.81 ms 5.67 ms 9.22 ms 0
Read/write (TPC-B like) 32 4,027 6.1 ms 19.7 ms 34 ms 56 ms 0
Read only 1 13,941 0.067 ms 0.11 ms 0.14 ms 0.254 ms 0
Read only 8 49,867 0.143 ms 0.272 ms 0.349 ms 0.615 ms 0
Read only 32 49,264 0.53 ms 1.1 ms 1.51 ms 2.54 ms 0

Scale 10 (1,000,000 accounts), loaded in 1.23 s. 60 s per run, prepared statements. Latency comes from sampled transaction logs, and p99.9 is left out when fewer than 1,000 were sampled.

pgbench at scale 100

Workload Clients Transactions/s Median p95 p99 p99.9 Failed
Read/write (TPC-B like) 1 1,037 0.905 ms 1.29 ms 2.34 ms 6.05 ms 0
Read/write (TPC-B like) 8 3,478 2.11 ms 3.93 ms 6.58 ms 10.7 ms 0
Read/write (TPC-B like) 32 4,506 6.53 ms 11.9 ms 16.2 ms 24.1 ms 0
Read only 1 10,528 0.086 ms 0.14 ms 0.295 ms 0.89 ms 0
Read only 8 38,646 0.187 ms 0.349 ms 0.453 ms 0.923 ms 0
Read only 32 39,288 0.701 ms 1.42 ms 1.95 ms 3.09 ms 0

Scale 100 (10,000,000 accounts), loaded in 12.9 s. 60 s per run, prepared statements. Latency comes from sampled transaction logs, and p99.9 is left out when fewer than 1,000 were sampled.

MySQL

sysbench OLTP

Workload Threads Transactions/s Queries/s Median p95 p99 Errors
Read/write 1 224 4,487 4.1 ms 6.21 ms 12.8 ms 0
Read/write 8 682 13,633 11.4 ms 18.3 ms 24.8 ms 0
Read/write 32 723 14,463 44.2 ms 70.5 ms 84.5 ms 0
Read only 1 603 9,649 1.58 ms 2.22 ms 2.71 ms 0
Read only 8 1,585 25,355 4.82 ms 7.57 ms 8.9 ms 0
Read only 32 1,480 23,682 21.1 ms 29.2 ms 33.1 ms 0

10 tables of 100,000 rows, loaded in 9.6 s. 60 s per run, one connection per thread.

Redis

memtier

Mix Operations/s Hits/s Median p99 p99.9
1:10 set:get 74,775 67,977 0.631 ms 2.96 ms 4.48 ms
1:1 set:get 70,619 35,309 0.679 ms 3.07 ms 4.61 ms

1,000,000 keys of 32 bytes. 64 connections over 2 threads, 60 s per ratio.

Web frameworks

Framework Fortunes req/s Single query req/s JSON req/s Fortunes p99 at 256 connections
Next.js nextjs 523 2,043 2,621 996 ms
Express express-postgresjs 6,287 9,290 22,738 340 ms
Fastify fastify-postgres 6,298 9,047 24,643 86.3 ms
NestJS nestjs 3,802 4,526 13,431 112 ms
Nuxt nuxt 5,494 8,374 23,567 529 ms
FastAPI fastapi 2,965 3,736 14,617 389 ms
Django django-postgresql 1,550 1,673 3,810 284 ms
Rails rails 2,626 3,538 12,354 131 ms
Laravel laravel 530 601 1,205 548 ms
Symfony symfony 867 816 2,667 339 ms

Peak requests per second across the 64 and 256 connection levels, measured with wrk. Each test has to pass the TechEmpower response checks first, or it's marked invalid.

Web apps

WooCommerce

Page mix

Step Requests/s Median p95 p99 Error rate
8 virtual users
Home page 1.54 1.05 s 1.24 s 1.32 s 0%
Shop page 1.54 1.43 s 1.64 s 1.67 s 0%
Category page 1.54 845 ms 1.56 s 1.65 s 0%
Product page 1.54 948 ms 1.14 s 1.32 s 0%
Product search 1.54 810 ms 983 ms 1.08 s 0%
32 virtual users
Home page 1.79 3.5 s 4.2 s 4.56 s 0%
Shop page 1.79 4.87 s 5.8 s 5.96 s 0%
Category page 1.67 4.11 s 5.27 s 5.4 s 0%
Product page 1.36 3.55 s 3.87 s 3.95 s 0%
Product search 1.36 3.21 s 3.55 s 3.73 s 0%

Cart and checkout

Step Requests/s Median p95 p99 Error rate
8 virtual users
Add to cart 3.08 1.05 s 1.33 s 1.53 s 0%
Cart 3.08 841 ms 1.06 s 1.15 s 0%
Checkout 3.08 633 ms 806 ms 865 ms 0%
32 virtual users
Add to cart 3.13 3.47 s 4.42 s 4.8 s 0%
Cart 3.13 3.61 s 4.16 s 4.44 s 0%
Checkout 3.13 2.81 s 3.32 s 3.41 s 0%

k6 with a fixed number of virtual users, 63 to 71 s per level. The error rate counts responses that weren't a 200.

Discourse

Signed in

Step Requests/s Median p95 p99 Error rate
1 virtual user
Topic page 1.62 268 ms 373 ms 617 ms 0%
Topic JSON 0.812 137 ms 179 ms 230 ms 0%
Home page 0.812 240 ms 400 ms 644 ms 0%
Categories page 0.414 281 ms 339 ms 370 ms 0%
User activity page 0.398 164 ms 294 ms 366 ms 0%
4 virtual users
Topic page 2.41 714 ms 1.05 s 1.66 s 0%
Topic JSON 1.22 393 ms 543 ms 612 ms 0%
Home page 1.2 632 ms 1.09 s 1.96 s 0%
Categories page 0.627 767 ms 1.15 s 1.4 s 0%
User activity page 0.594 436 ms 738 ms 1.13 s 0%
16 virtual users
Topic page 2.52 1.92 s 2.4 s 2.92 s 0%
Topic JSON 1.25 1.55 s 1.99 s 2.12 s 0%
Home page 1.25 1.83 s 2.31 s 2.43 s 0%
Categories page 0.643 1.99 s 2.39 s 2.55 s 0%
User activity page 0.594 1.78 s 2.09 s 2.21 s 0%

Anonymous

Step Requests/s Median p95 p99 Error rate
16 virtual users
Topic page 55.3 83.4 ms 188 ms 252 ms 0%
Topic JSON 27.7 81.5 ms 183 ms 237 ms 0%
Home page 27.7 82.5 ms 190 ms 246 ms 0%
Categories page 13.8 85.1 ms 188 ms 261 ms 0%
User activity page 13.9 261 ms 408 ms 562 ms 0%

k6 with a fixed number of virtual users, 60 to 62 s per level, after a 21 s warmup. The error rate counts responses that weren't a 200. Discourse ran with 4 app workers and 1024 MB of Postgres shared buffers, what its installer picks for a 4 GB box. It added a 2 GB swapfile first, the way its installer does, and didn't need it. The container peaked at 2,427 MB.

Ghost

Readers

Step Requests/s Median p95 p99 Error rate
1 virtual user
Home page 6.48 44.6 ms 56.6 ms 60.7 ms 0%
Post page 16.1 23.3 ms 29.9 ms 35.8 ms 0%
Tag page 3.23 28.8 ms 37.3 ms 42.2 ms 0%
Author page 3.23 30.2 ms 39.2 ms 46.6 ms 0%
RSS feed 3.23 33.6 ms 45.5 ms 52.5 ms 0%
4 virtual users
Home page 8.17 132 ms 179 ms 220 ms 0%
Post page 20.4 87.9 ms 127 ms 153 ms 0%
Tag page 4.11 79 ms 114 ms 131 ms 0%
Author page 4.08 86.1 ms 118 ms 144 ms 0%
RSS feed 4.06 87.6 ms 118 ms 148 ms 0%
16 virtual users
Home page 8.44 476 ms 584 ms 644 ms 0%
Post page 21.2 399 ms 498 ms 553 ms 0%
Tag page 4.2 258 ms 356 ms 404 ms 0%
Author page 4.23 261 ms 335 ms 377 ms 0%
RSS feed 4.21 263 ms 332 ms 408 ms 0%

Staff in Ghost Admin

Step Requests/s Median p95 p99 Error rate
1 virtual user
Post list 3.78 39.4 ms 52.2 ms 56.5 ms 0%
Post editor 11.4 15.6 ms 21 ms 26.2 ms 0%
Saving a draft 11.4 38 ms 47.7 ms 58.3 ms 0%
Member list 3.8 47.5 ms 67.1 ms 75.5 ms 0%
4 virtual users
Post list 4.4 50.6 ms 68.7 ms 88.4 ms 0%
Post editor 13.3 29.1 ms 42.3 ms 53.5 ms 0%
Saving a draft 13.3 219 ms 294 ms 344 ms 0%
Member list 4.43 66.9 ms 90.5 ms 115 ms 0%

k6 with a fixed number of virtual users, 60 s per level, after a 20 s warmup. The error rate counts responses that weren't a 200. Ghost ran the way its ghost-docker setup runs it: one Node process, and MySQL with its stock 128 MB buffer pool. Memory peaked with Ghost at 298 MB and MySQL at 618 MB.

Wagtail

Visitors

Step Requests/s Median p95 p99 Error rate
1 virtual user
Home page 1.31 100 ms 132 ms 145 ms 0%
Blog index 1.31 330 ms 428 ms 497 ms 0%
Blog post 3.91 32.6 ms 51.4 ms 58.3 ms 0%
Bread page 3.92 35.6 ms 46 ms 49.4 ms 0%
Location page 1.31 34.9 ms 44.1 ms 49.1 ms 0%
Site search 1.3 53.9 ms 89.8 ms 111 ms 0%
4 virtual users
Home page 2.17 260 ms 392 ms 448 ms 0%
Blog index 2.18 849 ms 1.3 s 1.35 s 0%
Blog post 6.49 74 ms 132 ms 166 ms 0%
Bread page 6.52 79.1 ms 131 ms 152 ms 0%
Location page 2.2 76.7 ms 129 ms 143 ms 0%
Site search 2.15 127 ms 260 ms 315 ms 0%
16 virtual users
Home page 2.47 767 ms 1.05 s 1.16 s 0%
Blog index 2.54 1.8 s 2.18 s 2.57 s 0%
Blog post 7.4 423 ms 677 ms 775 ms 0%
Bread page 7.43 443 ms 696 ms 825 ms 0%
Location page 2.47 429 ms 639 ms 734 ms 0%
Site search 2.49 527 ms 800 ms 929 ms 0%

Editors in the Wagtail admin

Step Requests/s Median p95 p99 Error rate
1 virtual user
Admin dashboard 0.526 113 ms 137 ms 148 ms 0%
Page explorer 1.08 445 ms 584 ms 703 ms 0%
Page editor 1.59 207 ms 253 ms 346 ms 0%
Image library 0.526 77.1 ms 183 ms 718 ms 0%
Admin page search 0.526 52.9 ms 95 ms 101 ms 0%
4 virtual users
Admin dashboard 0.802 277 ms 698 ms 825 ms 0%
Page explorer 1.62 1.25 s 2.01 s 2.26 s 0%
Page editor 2.41 501 ms 976 ms 1.18 s 0%
Image library 0.802 251 ms 647 ms 779 ms 0%
Admin page search 0.802 136 ms 434 ms 580 ms 0%

k6 with a fixed number of virtual users, 60 to 61 s per level, after a 20 s warmup. The error rate counts responses that weren't a 200. Wagtail ran the way bakerydemo ships it: uWSGI with 2 workers of 4 threads each, whatever the box, and Postgres and Redis on stock settings. Memory peaked with Wagtail at 296 MB, Postgres at 159 MB, and Redis at 26 MB.

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 40 GB NVMe 37.5 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-Rome Processor
CPU cores
2
CPU frequency
2445 MHz
AES-NI
Yes
VM-x/AMD-V
No
RAM reported
3.7 GiB
Swap reported
0 MiB
Disk reported
37.5 GiB
Virtualization reported
KVM
CPU steal
0% of busy CPU time stolen
Distro
Ubuntu 24.04.4 LTS
Kernel
6.8.0-138-generic
Architecture
x86_64
IPv4 reachable
Yes
IPv6 reachable
Yes

Advertised at test time

Plan
CX23
Product line
cost_optimized
Location
Falkenstein DC Park 1
vCPU
2 shared vCPU
Architecture
x86_64
RAM
4 GB
Storage
40 GB NVMe
Virtualization
KVM
Network
Unknown
Transfer
21.99 TB
Port 25
On request
Monthly price at test time
$6.49
Hourly price at test time
$0.010
YABS version
v2026-09-20
Ran at
Oct 15, 2026, 10:43:41 UTC
Parser version
5

Run timeline

Queued
Oct 15, 2026, 10:43:00 UTC
Server created
Oct 15, 2026, 10:43:35 UTC
First update from the server
Oct 15, 2026, 10:43:35 UTC
Completed
Oct 15, 2026, 12:21:31 UTC
Server deleted
Oct 15, 2026, 12:21:31 UTC
Cost of this run
$0.017
Watch party 0 watching

This party closed at . It's read only now.

Watch party

Loading the party