frankenphp + octane (Quick)
Web server load test
Concurrency was raised until throughput stopped improving. Response times were measured separately, at about 70% of that rate, so they include no queue a real visitor would not also hit. Learn more
Static
Framework baseline — no database
45,517
req/s at 512 concurrent
JSON API
25-item JSON payload
41,603
req/s at 473 concurrent
DB read
20 rows queried per request
33,966
req/s at 395 concurrent
I/O-bound
Simulated ~100ms outbound call
1,320
req/s at 512 concurrent
Laravel database performance
↓ Lower is better — time to run 100 statements, one record each
Create
17.2ms
INSERT per record
±0.72% over 5 runs
Read
13.6ms
SELECT per record, by id
±0.41% over 5 runs
Update
19.8ms
UPDATE per record, by id
±0.87% over 5 runs
Delete
16.8ms
DELETE per record, by id
±0.24% over 5 runs
Network speed test
Measured from the server to Cloudflare's nearest edge — this latency rides on every external request the app makes.
Download
2602mbps
Upload
669mbps
Latency
36ms
Environment
Host
- Provider
- Vultr
- Plan
- EPYC 9354P (Bare Metal)
- Datacenter
- Miami
- Cost
- $1,450/mo
Runtime
- Server
- FrankenPHP
- Mode
- Worker (persistent)
- Web server
- frankenphp
- SAPI
- frankenphp
- PHP
- 8.5.10
- Laravel
- 13.25.0
- Database
- pgsql
Machine
- CPU
- AMD EPYC 9354P 32-Core Processor (64 cores)
- RAM
- 755.1 GB
- OS
- Debian GNU/Linux 13 (trixie)
Tuning
- Write durability
- synchronous_commit=on · fsync=on
- OPcache
- on
- JIT
- Off
- OPcache memory
- 256 MB
- Memory limit
- 256M
- max_requests
- 500
- max_execution_time
- 30
Discuss this result
Comment on the original GitHub issue where this result was submitted. Feel free to ask more on how the host was set up or any other questions you have.
