Live readings

Server state

OxPHP serves this site itself. Below are the readings of the machine that answered your request, as they stand right now. Nothing is stored: the charts start the moment you open the page.

OxPHP 0.14.0 · PHP 8.5 · worker mode · 2 workers · 1 vCPU / 512 MB

GET /state/stream?step=1 text/event-stream
stream not open yet

Since the last deploy

The server keeps these counters itself, from the moment it starts. Every deploy is a restart, so the count runs from the deploy.

Uptime 1 h 46 m deployed Oct 25, 2026, 7:43 PM UTC · no restarts since the deploy btime · oxphp_uptime_seconds
Requests served 116 static files and .md twins included oxphp_requests_total
Worker recycles 0 none for the 128 MB memory limit, none for an error oxphp_worker_recycles_total
5xx responses 0 0% of all responses oxphp_responses_by_status_total

Right now

The memory scale is absolute: it runs from zero to the whole memory of the machine and never rescales. Requests and response time scale to their own peak.

step
Memorywhole container 275.0 MB
−60 snow
memory of the whole container · MemTotal − MemAvailable from /proc/meminfo
Requestsper second —
−60 snow
growth of oxphp_requests_total per step
Response timems — p50 · — p95
−60 sp50p95
estimated from the oxphp_request_duration_us histogram buckets, per step

Workers

Each worker keeps the application loaded between requests. If its PHP memory grows past 128 MB, the server replaces it with a fresh one, and its row starts counting again.

worker
PHP memory
running for
served
now
#0
6.9 MB
1 h 46 m
34
requests: 1
#1
6.6 MB
1 h 46 m
34
idle

oxphp_worker_memory_bytes · oxphp_worker_uptime_seconds · oxphp_worker_requests_count · oxphp_worker_request_fibers_active

The “now” column is approximate, since the reading and the count of streams held by this page are not taken in one step.

Where the numbers come from

The counters and histograms come from the built-in internal server of OxPHP, the same /metrics endpoint you get on your own machine. Memory comes from the Linux kernel. The server runs in a gVisor sandbox with a kernel of its own, so the chart shows the memory of the whole container, from /proc/meminfo. Memory and response time include the work of this page itself. There is no CPU chart. Inside gVisor the process sees only a small part of the CPU time the platform counts (0.8% against 4.3% on production), and a number nobody can vouch for has no place here.

The deploy clock is the moment the container started, read as btime from /proc/stat. On DigitalOcean that is a deploy or a move to another machine, and a move resets it too. It is not confirmed whether the platform restarts a crashed server in the same container, where this page would say the server restarted, or in a new one, where the crash would look like a deploy. Only numbers leave the machine. Configuration, paths and addresses stay on it. The stream is plain SSE, served by a PHP worker like this page, and while it waits for the next step that worker serves everyone else.