Fehlerbehebung · Vercel

Vercel-Cron-Limits erklärt: Hobby vs. Pro

Alle Limits für Vercel-Cronjobs an einem Ort — 2 Jobs und einmal täglich im Hobby-Plan, das Stundenfenster-Timing, nur UTC, Function-Laufzeitlimits — und was zu tun ist, wenn Sie herauswachsen.

Vercel-Cronjobs kommen mit Plan-Limits, die man leicht übersieht — bis sie zuschlagen. Hier sind alle an einem Ort, samt Auswegen.

Die Limits auf einen Blick

HobbyPro
Cronjobs pro Projekt240
Maximale FrequenzEinmal täglichMinutengenaue Zeitpläne
Timing-PräzisionInnerhalb der geplanten StundeMinutengenau
ZeitzoneNur UTCNur UTC
Retries bei FehlernKeineKeine
Fehler-AlertsKeineKeine
AufrufGET, unterliegt maxDurationGET, unterliegt maxDuration

Drei davon überraschen fast alle:

1. „Einmal täglich, irgendwann in der Stunde“ (Hobby)

Im Hobby-Plan bedeutet 0 3 * * * nicht 03:00 — sondern irgendwo zwischen 03:00 und 03:59 UTC. Das ist bewusste Lastverteilung. Konsequenzen:

  • aufeinanderfolgende Läufe können ~23 bis ~25 Stunden auseinanderliegen — bauen Sie keine „exakt 24h“-Annahmen in den Job;
  • ein „Mitternachts-Cleanup“ kann um 00:47 feuern und mit frühem Morgen-Traffic kollidieren;
  • untertägig geht gar nichts: */10 * * * * oder 0 */6 * * * sind im Hobby-Plan ungültig.

2. Nur UTC — auf jedem Plan

Es gibt keine Zeitzonen-Einstellung. Lautet die Anforderung „09:00 in Berlin“, feuert Ihr Cron im Sommer um 07:00 UTC und im Winter um 08:00 UTC — jemand muss zweimal im Jahr die vercel.json anpassen und neu deployen.

3. Keine Retries, keine Alerts — das Limit, das nirgendwo steht

Das leise Limit: Ein Cron-Aufruf, der mit 500 fehlschlägt oder in den Timeout läuft, ist einfach vorbei. Kein Retry, keine E-Mail, keine Warnung im Dashboard. Auf keinem Plan. Die Vercel-Cron-Fehlerbehebung behandelt die Fehlermodi im Detail.

Wenn Sie an die Limits stoßen

Upgrade auf Pro löst Frequenz und Präzision — aber nicht Zeitzonen, Retries oder Alerting.

Oder trennen Sie Trigger und Compute. Ihre Route bleibt, wo sie ist; ein externer Scheduler ruft sie auf:

jobs:
  - id: cleanup
    name: Cleanup
    kind: http
    method: GET
    url: https://ihre-app.vercel.app/api/cleanup
    schedule: "*/10 * * * *"        # jede Frequenz, jeder Plan
    timezone: Europe/Berlin          # echte Zeitzonen, DST-bewusst
    retries: 3                       # Retries mit Backoff
    headers:
      Authorization: Bearer ${CRON_SECRET}

Das bringt untertägige Zeitpläne auch für Hobby-Projekte, minutengenaues Timing, Zeitzonen pro Job, Retries und Fehler-Alerts (E-Mail, Slack, Discord, Telegram) — während die Function weiter auf Vercel läuft. steadycron import vercel konvertiert Ihre bestehende vercel.json in einem Befehl: siehe Migration von Vercel-Cron.

Häufige Fragen

Wie viele Cronjobs erlaubt der Vercel-Hobby-Plan?

Zwei Cronjobs, jeder höchstens einmal pro Tag. Zeitpläne häufiger als täglich sind im Hobby-Plan ungültig und laufen nicht wie geschrieben.

Wie genau ist das Vercel-Cron-Timing im Hobby-Plan?

Bewusst ungenau: Der Lauf landet irgendwann innerhalb der geplanten Stunde. 0 3 * * * bedeutet „zwischen 03:00 und 03:59 UTC“. Minutengenauigkeit erfordert den Pro-Plan.

Können Vercel-Cronjobs in meiner lokalen Zeitzone laufen?

Nein — Zeitpläne sind auf jedem Plan nur UTC, mit Standard-Cron (5 Felder) und ohne Sekundenfeld. Ein „9-Uhr-Berlin“-Job verschiebt sich bei jeder Zeitumstellung um eine Stunde.

Wiederholt Vercel fehlgeschlagene Cronjobs?

Nein, auf keinem Plan. Ein fehlgeschlagener Aufruf wird geloggt — das war's. Keine Retries, keine Fehler-Alerts. Wenn ein Lauf wichtig ist: Heartbeat-Monitor ergänzen oder die Route von einem Scheduler mit Retries aufrufen lassen.