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
28,008
req/s at 79 concurrent
JSON API
25-item JSON payload
25,542
req/s at 74 concurrent
DB read
20 rows queried per request
19,155
req/s at 260 concurrent
I/O-bound
Simulated ~100ms outbound call
991
req/s at 385 concurrent
Laravel database performance
↓ Lower is better — time to run 100 statements, one record each
Create
24.7ms
INSERT per record
±3.7% over 5 runs
Read
11.3ms
SELECT per record, by id
±3.51% over 5 runs
Update
36.4ms
UPDATE per record, by id
±8.6% over 5 runs
Delete
32.5ms
DELETE per record, by id
±20.37% over 5 runs — unstable
Network speed test
Measured from the server to Cloudflare's nearest edge — this latency rides on every external request the app makes.
Download
2325mbps
Upload
658mbps
Latency
35ms
Environment
Host
- Provider
- DigitalOcean
- Plan
- c-48-intel
- Datacenter
- NYC2
- Cost
- $1,310/mo
Runtime
- Server
- FrankenPHP
- Mode
- Worker (persistent)
- Web server
- frankenphp
- SAPI
- frankenphp
- PHP
- 8.5.10
- Laravel
- 13.25.0
- Database
- pgsql
Machine
- CPU
- INTEL(R) XEON(R) GOLD 6548N (48 cores)
- RAM
- 94.3 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.
