fix(convex): mover cron jobs para API HTTP + crontab do Linux
Problema: - Cron jobs do Convex criam registros em _scheduled_job_logs - Convex self-hosted carrega TODAS as versoes em memoria - 1488 execucoes/dia = ~45k registros/mes acumulando - Uso de memoria chegando a 19GB, causando 12 OOM kills/dia Solucao: - Criar endpoints HTTP em /api/cron/* para substituir crons - Desabilitar crons no Convex (comentados em crons.ts) - Chamar endpoints via crontab do Linux Novos arquivos: - src/app/api/cron/chat-cleanup/route.ts - src/app/api/cron/usb-cleanup/route.ts - scripts-static/* (copiado da VPS para versionamento) Documentacao: - docs/OPERATIONS.md secao 12 com instrucoes do crontab 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
e2dde8510a
commit
178c7d7341
10 changed files with 1357 additions and 19 deletions
|
|
@ -3,6 +3,21 @@ import { api } from "./_generated/api"
|
|||
|
||||
const crons = cronJobs()
|
||||
|
||||
// =============================================================================
|
||||
// CRON JOBS DESABILITADOS PARA REDUZIR USO DE MEMORIA
|
||||
// =============================================================================
|
||||
// Os cron jobs do Convex criam registros em _scheduled_job_logs que acumulam
|
||||
// versoes em memoria (o Convex self-hosted carrega TODAS as versoes em RAM).
|
||||
//
|
||||
// Esses jobs foram movidos para endpoints HTTP em /api/cron/* e devem ser
|
||||
// chamados via N8N ou outro scheduler externo:
|
||||
//
|
||||
// - POST /api/cron/chat-cleanup (substitui auto-end-inactive-chat-sessions)
|
||||
// - POST /api/cron/usb-cleanup (substitui cleanup-stale-usb-policies)
|
||||
//
|
||||
// Autenticacao: Bearer token no header Authorization (usar CRON_SECRET ou REPORTS_CRON_SECRET)
|
||||
// =============================================================================
|
||||
|
||||
// Flags to keep heavy jobs disabled until the Convex backend stabilizes.
|
||||
const reportsCronEnabled = process.env.REPORTS_CRON_ENABLED === "true"
|
||||
const autoPauseCronEnabled = process.env.AUTO_PAUSE_ENABLED === "true"
|
||||
|
|
@ -25,20 +40,20 @@ if (autoPauseCronEnabled) {
|
|||
)
|
||||
}
|
||||
|
||||
// Cleanup de policies USB pendentes por mais de 1 hora (sem flag, sempre ativo)
|
||||
crons.interval(
|
||||
"cleanup-stale-usb-policies",
|
||||
{ minutes: 30 },
|
||||
api.usbPolicy.cleanupStalePendingPolicies,
|
||||
{}
|
||||
)
|
||||
// DESABILITADO - Movido para /api/cron/usb-cleanup (chamado via N8N)
|
||||
// crons.interval(
|
||||
// "cleanup-stale-usb-policies",
|
||||
// { minutes: 30 },
|
||||
// api.usbPolicy.cleanupStalePendingPolicies,
|
||||
// {}
|
||||
// )
|
||||
|
||||
// Encerrar sessoes de chat inativas por mais de 5 minutos (sempre ativo)
|
||||
crons.interval(
|
||||
"auto-end-inactive-chat-sessions",
|
||||
{ minutes: 1 },
|
||||
api.liveChat.autoEndInactiveSessions,
|
||||
{}
|
||||
)
|
||||
// DESABILITADO - Movido para /api/cron/chat-cleanup (chamado via N8N)
|
||||
// crons.interval(
|
||||
// "auto-end-inactive-chat-sessions",
|
||||
// { minutes: 1 },
|
||||
// api.liveChat.autoEndInactiveSessions,
|
||||
// {}
|
||||
// )
|
||||
|
||||
export default crons
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue