Health check пула соединений с БД для API-only SaaS
Под нагрузкой приложение отдаёт 500 не потому, что Postgres мёртв — исчерпан connection pool. Внешний монитор, бьющий в /, узнает позже клиентов.
StillOnline фиксирует HTTP-код и задержку на зарегистрированном URL. /health или /ready, который берёт соединение и отдаёт 503 при насыщении pool, превращает давление в DOWN на странице статуса.
Краткий ответ
GET /ready (или /health, если готовы к blip при деплое) с SELECT 1 или acquire() и коротким timeout — 503, если соединение не выдали за < 500 мс. URL в StillOnline; пять минут на Free, две неудачи подряд → DOWN. Исчерпание pool и падение хоста БД различайте в тексте инцидента; код может быть одинаковым 503. Шаблон JSON ниже; паттерны API — API-only.
Pool vs простой БД
| Симптом | HTTP | Для клиента | На status page |
|---|---|---|---|
| Timeout pool под нагрузкой | 503 на /ready | Таймауты | Degraded / Major |
| Postgres недоступен | 503 | Полный отказ API | API Outage |
| Миграции | краткий 503 | Ошибки | Maintenance |
/health без БД | 200 | Ложная уверенность | Избегать для API-only |
Пул соединений PostgreSQL конечен — health должен отваливаться быстро.
Шаблон JSON
{
"status": "ok",
"checks": {
"database": "ok"
}
}
При сбое:
{
"status": "error",
"checks": {
"database": "pool_timeout"
}
}
503, без строк подключения — дизайн health.
curl -sS -w "\n%{http_code}\n" https://api.yourproduct.com/ready
StillOnline
- Приложение → HTTP →
/ready→ 200. - Инцидент на API — публичная страница.
- Pro —
/healthи/readyотдельно; Free — один URL.
FAQ
Ночные blip pool?
Два fail при 5 мин ≈ 10 мин красного. Сначала pool и timeout.
StillOnline читает поле database в JSON?
Нет — только код HTTP. Маппите pool → 503 в handler.
Хватит status managed БД?
status.supabase.com — платформа, не ваш pool; мониторьте свой /ready.
Дополнительно
Дизайн health URL: /health и /ready для SaaS
Выбор GET /health, /api/health или /ready для внешних проверок. JSON, auth, ping БД, страница статуса StillOnline и алерты Telegram через бота StillOnline.
Что мониторить в API-only SaaS
API-first: правильный health URL, страница статуса и алерты владельца. Мониторинг /health или /api/health и Telegram через бота StillOnline. StillOnline.
Мониторинг Supabase-бэкенда снаружи
Внешний мониторинг SaaS на Supabase: REST health, cold start Edge Functions, страница статуса StillOnline — не полагайтесь только на status.supabase.com.
Проверки uptime для Neon и PlanetScale
Serverless Postgres и MySQL: лёгкий SELECT vs полный app health, ложные алерты при паузе compute — HTTP-мониторинг StillOnline для indie SaaS.