Reduce scheduler polling noise
Backend CI / Backend (push) Successful in 14m44s

This commit is contained in:
2026-05-21 00:56:43 +08:00
parent 509f9e0c71
commit 49b1ccc961
10 changed files with 615 additions and 21 deletions
@@ -0,0 +1,11 @@
DELETE FROM ops.scheduler_job_triggers
WHERE job_key = 'scheduler_run_retention';
DELETE FROM ops.scheduler_job_runs
WHERE job_key = 'scheduler_run_retention';
DELETE FROM ops.scheduler_jobs
WHERE job_key = 'scheduler_run_retention';
DROP INDEX IF EXISTS ops.idx_scheduler_job_triggers_finished_requested;
DROP INDEX IF EXISTS ops.idx_scheduler_job_triggers_run_id;
@@ -0,0 +1,19 @@
CREATE INDEX IF NOT EXISTS idx_scheduler_job_triggers_run_id
ON ops.scheduler_job_triggers (run_id)
WHERE run_id IS NOT NULL;
CREATE INDEX IF NOT EXISTS idx_scheduler_job_triggers_finished_requested
ON ops.scheduler_job_triggers (requested_at ASC, id ASC)
WHERE status IN ('success', 'failed', 'skipped');
INSERT INTO ops.scheduler_jobs
(job_key, display_name, category, description, enabled, schedule_type, interval_seconds, timezone, timeout_seconds, batch_size, config)
VALUES
('scheduler_run_retention', '调度运行记录留存清理', 'ops', '限批删除 15 天以前已结束的调度触发与运行记录,控制高频 scheduler 审计表体积。', true, 'interval', 86400, 'Asia/Shanghai', 300, 5000,
'{"retention_days":15,"batch_size":5000,"max_batches_per_run":100,"dry_run":false,"statement_timeout":"5s","run_at_local":"03:20"}'::jsonb)
ON CONFLICT (job_key) DO UPDATE
SET display_name = EXCLUDED.display_name,
category = EXCLUDED.category,
description = EXCLUDED.description,
config = ops.scheduler_jobs.config || EXCLUDED.config,
updated_at = NOW();
@@ -0,0 +1,10 @@
UPDATE ops.scheduler_jobs
SET interval_seconds = 60,
config = config - 'claim_ttl' - 'suppress_empty_success_runs' - 'empty_success_metric_keys',
updated_at = NOW()
WHERE job_key = 'monitoring_result_recovery';
UPDATE ops.scheduler_jobs
SET config = config - 'suppress_empty_success_runs' - 'empty_success_metric_keys',
updated_at = NOW()
WHERE job_key = 'schedule_dispatch';
@@ -0,0 +1,15 @@
UPDATE ops.scheduler_jobs
SET interval_seconds = 120,
config = config || '{"claim_ttl":"5m"}'::jsonb,
updated_at = NOW()
WHERE job_key = 'monitoring_result_recovery';
UPDATE ops.scheduler_jobs
SET config = config || '{"suppress_empty_success_runs":true,"empty_success_metric_keys":["hydrated_count","claimed_count"]}'::jsonb,
updated_at = NOW()
WHERE job_key = 'schedule_dispatch';
UPDATE ops.scheduler_jobs
SET config = config || '{"suppress_empty_success_runs":true,"empty_success_metric_keys":["recoverable_count","republished_count"]}'::jsonb,
updated_at = NOW()
WHERE job_key = 'monitoring_result_recovery';