# The Health page

Whether the installation keeps up: its services, its queues and its workers, live.

In **Platform**, under **Installation**, open **Health**. It reads every 10 seconds while open, and says **Live**. It is for instance-wide platform admins.

![Health: Postgres and Redis Healthy, Mail Not set up, Schema matching this build, every process on one version.](https://docs.gorunner.io/img/self-host/health-light.jpg)

## Services

- **Postgres**: Whether it answers, and this API process’s connections in use.
- **Redis**: Whether it answers, and its memory. It warns from 70 % of `maxmemory`: at the limit, Redis refuses new writes, so new runs wait instead of starting, schedules don’t fire and sign-in fails until memory is freed. “Can delete keys when full” means it isn’t set to `noeviction`.
- **Object storage**: Whether the bucket answers, with your own or built-in storage.
- **Mail**: Who sends, or “Not set up. People sign in with a password, and GoRunner sends no email.”
- **Schema**: The database’s version, and whether it matches this build.
- **Build**: Whether every process runs one version. During an update it reads **Mixed**.

## Over time

Four charts over 1 hour, 24 hours or 7 days, all at the same moment: **Longest wait to start**, **Waiting runs**, **Workers live** and **Busy slots**. A wait over 2 minutes counts as behind.

**Who is waiting** names the organizations whose runs wait, and why: a free worker slot, their runs-at-once limit, or a time later on.

## Queues and dead letters

**Queues** shows **Workflow runs**, **Editor test runs** and **Keel**: waiting, running, the oldest wait, and how many start a minute.

**Dead letters** are runs that never reached a worker. A run also lands here when its worker stops three times; it is already failed. **Clear…** removes them without running them, and asks for your code.

## Background jobs

Each says **On time**, **Late**, **Failed** or **Not yet**, and when it last ran.

| Job | What it does | Every |
| --- | --- | --- |
| Schedules | Starts scheduled runs on time. | 1 min |
| Polling triggers | Checks polled apps for new items. | 1 min |
| Re-dispatch | Hands waiting runs to workers again. | 10 s |
| Stuck-run recovery | Gives a lost run to another worker. | 10 s |
| Run close-out | Closes runs whose worker is gone for good. | 10 min |
| Timed resumes | Wakes runs that waited for a time or an answer. | 5 s |
| Log flush retry | Saves run logs that couldn’t be written the first time. | 1 min |
| Run data cleanup | Deletes run data past its keep time. | 1 h |
| Audit cleanup | Deletes audit rows past their keep time. | 1 h |
| Restore deadlines | Removes deleted customer accounts once their restore window ends. | 1 h |
| Notification events | Collects the events sent to your server. | 15 s |
| Notification delivery | Sends your server its events, and retries. | 5 s |
| Usage rollup | Counts runs per organization per day, for the charts. | 5 min |
| License notices | Emails platform admins before the license ends. | 5 min |
| Payload cleanup | Deletes stored step data that nothing needs. | 15 s |
| Health samples | Writes one sample a minute for Health’s charts. | 1 min |
| Visit limits | Ends staff visits at their limit or after an hour idle. | 1 min |

A job an installation may not use shows only once it has run: run data and audit cleanup, restore deadlines, the two notification jobs, and license notices (only with mail).

## Processes

One row per API and worker process: its host, role, version, last heartbeat, and busy slots or database connections.

**What do I do when the queue is behind?**

The verdict at the top names the cause. Every slot busy means runs arrive faster than workers finish them: add [workers](https://docs.gorunner.io/self-host/several-servers), or raise `WORKER_CONCURRENCY` with the workers’ memory. No worker live means nothing runs until one reports.

## Related

- [Health checks](https://docs.gorunner.io/self-host/health-checks): The addresses a load balancer asks
- [Metrics](https://docs.gorunner.io/self-host/metrics): The same figures, in your own tool
- [Several servers](https://docs.gorunner.io/self-host/several-servers): More workers · 15 min

Source: https://docs.gorunner.io/self-host/health
