Skip to main content

Hetzner CPX31

Ashburn, VA

Benchmark complete
Finished Oct 13, 2026
Geekbench 7 single-core
1,365
Faster than 80% of 4 vCPU plans
Geekbench 7 multi-core
4,877
Faster than 85% of 4 vCPU plans
Disk 4K IOPS
54,420
fio random read and write, 50/50
Monthly price at test time
$73.49
66 multi-core points per dollar
Same price today

Server

  • Provider
    Hetzner
  • Plan
    CPX31
  • Location
    Ashburn, VA
  • vCPU
    4
  • RAM
    8 GB
  • Storage
    160 GB NVMe
  • Network
    Unknown
  • OS image
    ubuntu-24.04
  • Trigger
    Scheduled
  • Queued at
    Oct 13, 2026, 12:42:00 UTC

CPU

Version Single-core Multi-core Result link
Geekbench 7 1,365 4,877 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,446
52nd of 160
4,318
21st of 120
Navigation
1,427
52nd of 160
Single-core only
HTML5 Browser
1,281
59th of 160
Single-core only
PDF Viewer
1,421
60th of 160
Single-core only
Photo Library
1,286
57th of 160
4,927
21st of 120
Clang
1,146
70th of 160
4,565
28th of 120
Text Processing
1,195
66th of 160
4,500
26th of 120
Asset Compression
1,357
65th of 160
5,465
25th of 120
HDR
1,361
54th of 160
4,138
22nd of 120
Photo Editor
1,558
51st of 160
6,197
11th of 120
Ray Tracer
1,297
63rd of 160
5,225
25th of 120
Structure from Motion
1,688
38th of 160
Single-core only
Game Physics
1,248
69th of 160
Single-core only
Video Encoder
1,259
59th of 160
Single-core only
Audio Encoder
1,451
49th of 160
Single-core only
Video Player
1,525
48th of 160
Single-core only

Rank among the 160 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 52.3 GB/s 3 16.8%
Scale higher is better 40.9 GB/s 3 16.6%
Add higher is better 42.7 GB/s 3 17%
Triad higher is better 43.1 GB/s 3 16.7%

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 849/s 3 0.377%
RSA 4096 verifies higher is better 56,135/s 3 2.02%
SHA-256 higher is better 3.17 GB/s 3 0.4%
AES-256-GCM higher is better 15.1 GB/s 3 0.155%
ChaCha20-Poly1305 higher is better 8.57 GB/s 3 0.11%

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 4.68 ms 3 0.198%
Requests per second, 90th percentile higher is better 822/s 3 0.14%
Request latency, 99.9th percentile lower is better 9.65 ms 3 9.49%
Requests per second, average higher is better 808/s 3 0.437%

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

Disk

Block size Read Write Total
4K 106.1 MB/s (27,174 IOPS) 106.4 MB/s (27,246 IOPS) 212.6 MB/s (54,420 IOPS)
64K 1 GB/s (16,414 IOPS) 1.01 GB/s (16,501 IOPS) 2.01 GB/s (32,915 IOPS)
512K 1.53 GB/s (3,141 IOPS) 1.62 GB/s (3,308 IOPS) 3.15 GB/s (6,449 IOPS)
1M 1.78 GB/s (1,821 IOPS) 1.9 GB/s (1,943 IOPS) 3.68 GB/s (3,764 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 2.43 Gbps 2.97 Gbps
Eranium, Amsterdam, NL (100G) IPv4 2.3 Gbps 2.77 Gbps
Leaseweb, Singapore, SG (10G) IPv4 693 Mbps 983 Mbps
Clouvider, Los Angeles, CA, US (10G) IPv4 2.39 Gbps 285 Mbps
Leaseweb, NYC, NY, US (10G) IPv4 9.36 Gbps 9.28 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 4,357 0.229 ms
fdatasync 4,113 0.243 ms
fsync 2,445 0.409 ms
fsync_writethrough Not supported here n/a
open_sync 2,575 0.388 ms
Two 8 kB writes
open_datasync 2,049 0.488 ms
fdatasync 3,687 0.271 ms
fsync 2,029 0.493 ms
fsync_writethrough Not supported here n/a
open_sync 1,122 0.891 ms
open_sync at different write sizes
1 * 16kB open_sync write 2,452 0.408 ms
2 * 8kB open_sync writes 1,175 0.851 ms
4 * 4kB open_sync writes 624 1.6 ms
8 * 2kB open_sync writes 297 3.37 ms
16 * 1kB open_sync writes 151 6.61 ms
fsync on a non-write descriptor
write, fsync, close 2,069 0.483 ms
write, close, fsync 2,270 0.44 ms
Non-synced 8 kB writes
write 1,337,746 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,391 0.685 ms 0.913 ms 1.24 ms 2.47 ms 0
Read/write (TPC-B like) 8 6,824 1.01 ms 2.05 ms 3.08 ms 5.11 ms 0
Read/write (TPC-B like) 32 7,207 3.33 ms 11.3 ms 19.4 ms 31.7 ms 0
Read only 1 17,175 0.054 ms 0.084 ms 0.107 ms 0.171 ms 0
Read only 8 102,379 0.07 ms 0.137 ms 0.181 ms 0.263 ms 0
Read only 32 128,559 0.219 ms 0.388 ms 0.503 ms 0.736 ms 0

Scale 10 (1,000,000 accounts), loaded in 1.01 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,286 0.73 ms 0.976 ms 1.39 ms 4.08 ms 0
Read/write (TPC-B like) 8 6,665 1.06 ms 1.64 ms 6.35 ms 9.91 ms 0
Read/write (TPC-B like) 32 8,850 3.22 ms 6.35 ms 10.6 ms 20.1 ms 0
Read only 1 13,964 0.067 ms 0.103 ms 0.129 ms 0.2 ms 0
Read only 8 79,009 0.092 ms 0.176 ms 0.228 ms 0.425 ms 0
Read only 32 96,418 0.298 ms 0.513 ms 0.669 ms 0.996 ms 0

Scale 100 (10,000,000 accounts), loaded in 10.4 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 268 5,356 3.43 ms 5.37 ms 9.91 ms 0
Read/write 8 1,079 21,580 6.91 ms 12.3 ms 17.3 ms 0
Read/write 32 1,747 34,936 17.6 ms 29.7 ms 36.9 ms 0
Read only 1 693 11,089 1.37 ms 1.93 ms 2.31 ms 0
Read only 8 3,719 59,504 2 ms 3.49 ms 4.33 ms 0
Read only 32 3,725 59,603 8.28 ms 12.1 ms 14.5 ms 0

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

Redis

memtier

Mix Operations/s Hits/s Median p99 p99.9
1:10 set:get 100,057 90,961 0.607 ms 1.28 ms 1.94 ms
1:1 set:get 100,741 50,370 0.591 ms 1.25 ms 1.83 ms

1,000,000 keys of 32 bytes. 64 connections over 4 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 1,260 4,723 6,457 340 ms
Express express-postgresjs 15,404 21,587 65,812 36.4 ms
Fastify fastify-postgres 15,395 22,962 71,197 33.6 ms
NestJS nestjs 9,449 10,581 36,482 49.8 ms
Nuxt nuxt 13,697 21,202 66,266 43.1 ms
FastAPI fastapi 7,590 9,180 35,676 191 ms
Django django-postgresql 3,609 4,044 10,053 162 ms
Rails rails 5,937 8,232 33,060 62.5 ms
Laravel laravel 1,577 1,640 3,139 179 ms
Symfony symfony 1,963 2,204 6,044 151 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 4.7 349 ms 478 ms 505 ms 0%
Shop page 4.7 459 ms 582 ms 656 ms 0%
Category page 4.7 295 ms 492 ms 550 ms 0%
Product page 4.7 318 ms 403 ms 458 ms 0%
Product search 4.7 271 ms 371 ms 428 ms 0%
32 virtual users
Home page 4.54 1.34 s 1.52 s 1.59 s 0%
Shop page 4.54 1.75 s 1.97 s 2.12 s 0%
Category page 4.54 1.4 s 1.8 s 1.99 s 0%
Product page 4.54 1.29 s 1.46 s 1.52 s 0%
Product search 4.54 1.17 s 1.33 s 1.36 s 0%

Cart and checkout

Step Requests/s Median p95 p99 Error rate
8 virtual users
Add to cart 9.09 356 ms 469 ms 501 ms 0%
Cart 9.09 293 ms 384 ms 421 ms 0%
Checkout 9.09 233 ms 309 ms 339 ms 0%
32 virtual users
Add to cart 8.79 1.34 s 1.6 s 1.68 s 0%
Cart 8.79 1.23 s 1.43 s 1.51 s 0%
Checkout 8.79 1.03 s 1.22 s 1.28 s 0%

k6 with a fixed number of virtual users, 61 to 63 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 2.09 214 ms 255 ms 420 ms 0%
Topic JSON 1.04 108 ms 127 ms 194 ms 0%
Home page 1.04 190 ms 317 ms 502 ms 0%
Categories page 0.53 215 ms 245 ms 258 ms 0%
User activity page 0.513 148 ms 192 ms 309 ms 0%
4 virtual users
Topic page 7.51 233 ms 314 ms 563 ms 0%
Topic JSON 3.75 118 ms 162 ms 207 ms 0%
Home page 3.75 210 ms 286 ms 516 ms 0%
Categories page 1.88 244 ms 326 ms 559 ms 0%
User activity page 1.88 152 ms 216 ms 377 ms 0%
16 virtual users
Topic page 7.33 915 ms 1.17 s 1.46 s 0%
Topic JSON 3.69 685 ms 890 ms 1.03 s 0%
Home page 3.67 849 ms 1.1 s 1.25 s 0%
Categories page 1.82 917 ms 1.27 s 1.95 s 0%
User activity page 1.8 731 ms 930 ms 1.39 s 0%

Anonymous

Step Requests/s Median p95 p99 Error rate
16 virtual users
Topic page 162 23.8 ms 47.2 ms 73.8 ms 0%
Topic JSON 81.3 22.5 ms 45 ms 71 ms 0%
Home page 81.2 24 ms 46.8 ms 71.5 ms 0%
Categories page 40.6 23.7 ms 46.8 ms 79.8 ms 0%
User activity page 40.7 148 ms 199 ms 294 ms 0%

k6 with a fixed number of virtual users, 60 to 61 s per level, after a 21 s warmup. The error rate counts responses that weren't a 200. Discourse ran with 8 app workers and 2048 MB of Postgres shared buffers, what its installer picks for a 8 GB box. Its installer adds no swap on a box this big. The container peaked at 2,740 MB.

Ghost

Readers

Step Requests/s Median p95 p99 Error rate
1 virtual user
Home page 9.31 32.1 ms 43.5 ms 48.5 ms 0%
Post page 23.3 15.6 ms 21.4 ms 25.3 ms 0%
Tag page 4.65 19.9 ms 27.4 ms 29.5 ms 0%
Author page 4.65 21 ms 29 ms 32.9 ms 0%
RSS feed 4.65 20.8 ms 29.2 ms 34.2 ms 0%
4 virtual users
Home page 12.1 94.1 ms 121 ms 141 ms 0%
Post page 30.2 57.2 ms 84.7 ms 99.8 ms 0%
Tag page 6.06 53.2 ms 74.7 ms 83 ms 0%
Author page 6.03 58.6 ms 84.9 ms 102 ms 0%
RSS feed 6.01 62.2 ms 89.5 ms 103 ms 0%
16 virtual users
Home page 12.2 333 ms 392 ms 422 ms 0%
Post page 30.5 277 ms 338 ms 366 ms 0%
Tag page 6.1 183 ms 234 ms 266 ms 0%
Author page 6.1 178 ms 229 ms 248 ms 0%
RSS feed 6.11 190 ms 236 ms 259 ms 0%

Staff in Ghost Admin

Step Requests/s Median p95 p99 Error rate
1 virtual user
Post list 4.88 28.9 ms 41.2 ms 46.8 ms 0%
Post editor 14.7 11.6 ms 15.8 ms 19.3 ms 0%
Saving a draft 14.7 30.1 ms 38.6 ms 46.9 ms 0%
Member list 4.88 37.2 ms 52.7 ms 66.3 ms 0%
4 virtual users
Post list 6.9 37.2 ms 47.1 ms 52.5 ms 0%
Post editor 20.8 18.5 ms 25 ms 29.5 ms 0%
Saving a draft 20.8 142 ms 181 ms 198 ms 0%
Member list 6.93 42.5 ms 52.4 ms 61.2 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 530 MB and MySQL at 625 MB.

Wagtail

Visitors

Step Requests/s Median p95 p99 Error rate
1 virtual user
Home page 1.58 81.6 ms 110 ms 221 ms 0%
Blog index 1.58 275 ms 303 ms 315 ms 0%
Blog post 4.7 28.5 ms 42.6 ms 51.6 ms 0%
Bread page 4.71 31.4 ms 38.3 ms 46 ms 0%
Location page 1.58 29.6 ms 36.1 ms 39.6 ms 0%
Site search 1.56 47.9 ms 74.5 ms 76.6 ms 0%
4 virtual users
Home page 3.07 175 ms 299 ms 354 ms 0%
Blog index 3.1 644 ms 1,000 ms 1.16 s 0%
Blog post 9.18 47.9 ms 89.7 ms 133 ms 0%
Bread page 9.22 53.8 ms 94.2 ms 106 ms 0%
Location page 3.1 51.8 ms 82.4 ms 95.7 ms 0%
Site search 3.05 75.7 ms 151 ms 187 ms 0%
16 virtual users
Home page 3.62 507 ms 668 ms 711 ms 0%
Blog index 3.59 1.38 s 1.62 s 1.75 s 0%
Blog post 10.8 285 ms 465 ms 555 ms 0%
Bread page 10.8 295 ms 466 ms 559 ms 0%
Location page 3.59 293 ms 485 ms 566 ms 0%
Site search 3.59 363 ms 531 ms 607 ms 0%

Editors in the Wagtail admin

Step Requests/s Median p95 p99 Error rate
1 virtual user
Admin dashboard 0.678 88.4 ms 110 ms 129 ms 0%
Page explorer 1.39 337 ms 381 ms 429 ms 0%
Page editor 2.08 162 ms 198 ms 341 ms 0%
Image library 0.695 65.5 ms 78.4 ms 497 ms 0%
Admin page search 0.678 40.5 ms 78.8 ms 156 ms 0%
4 virtual users
Admin dashboard 1.09 267 ms 515 ms 651 ms 0%
Page explorer 2.24 757 ms 1.44 s 1.72 s 0%
Page editor 3.34 412 ms 895 ms 1.09 s 0%
Image library 1.09 174 ms 488 ms 645 ms 0%
Admin page search 1.09 102 ms 310 ms 415 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 299 MB, Postgres at 151 MB, and Redis at 25 MB.

Advertised vs. measured

Spec Advertised Measured
vCPU 4 4
CPU Shared vCPU 0% of busy CPU time stolen
RAM 8 GB 7.6 GiB
Storage 160 GB NVMe 150.1 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
4
CPU frequency
2445 MHz
AES-NI
Yes
VM-x/AMD-V
No
RAM reported
7.6 GiB
Swap reported
0 MiB
Disk reported
150.1 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
CPX31
Product line
regular_purpose
Location
Ashburn, VA
vCPU
4 shared vCPU
Architecture
x86_64
RAM
8 GB
Storage
160 GB NVMe
Virtualization
KVM
Network
Unknown
Transfer
3.3 TB
Port 25
On request
Monthly price at test time
$73.49
Hourly price at test time
$0.12
YABS version
v2026-09-20
Ran at
Oct 13, 2026, 12:42:38 UTC
Parser version
5

Run timeline

Queued
Oct 13, 2026, 12:42:00 UTC
Server created
Oct 13, 2026, 12:42:33 UTC
First update from the server
Oct 13, 2026, 12:42:33 UTC
Completed
Oct 13, 2026, 14:13:49 UTC
Server deleted
Oct 13, 2026, 14:13:49 UTC
Cost of this run
$0.18
Watch party 0 watching

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

Watch party

Loading the party