Перейти к содержимому

Cold-start serverless

Cold-start — невидимый враг serverless: первая минута дня, после релиза или после долгой паузы пользователь получает ответ за 5–10 секунд вместо 200 мс. Чтобы не ловить это «по жалобе», запустите scheduled probe, которая дёргает функцию с заведомо холодным контейнером и измеряет TTFB.

import os, time, requests, uuid
URL = os.environ["FN_URL"]
def handler(event, context):
# Cache-buster заставляет API Gateway маршрутизировать в новый инстанс
t0 = time.time()
r = requests.get(URL + f"?probe={uuid.uuid4().hex}", timeout=15)
ms = int((time.time() - t0) * 1000)
if ms > 3000:
push("🥶 Serverless cold-start", f"{ms} мс на первом ответе", 8 if ms > 8000 else 5)
return {"statusCode": 200, "body": str(ms)}
def push(t, m, p):
requests.post(f"{os.environ['NOTIFLY_URL']}/message",
params={"token": os.environ["NOTIFLY_TOKEN"]},
json={"title": t, "message": m, "priority": p}, timeout=5)

Запускайте раз в 5–15 минут с timer-trigger. Полезно дублировать probe для каждого региона / каждого endpoint-а отдельно — и в текст алёрта класть имя.