## Bug description

Some instances sent instance status report thousands of times. I bet it's because of Celery retrying or something, as some of the queries are using COUNT(*) and can be very slow. We should use estimated row sizes instead probably.

## Expected behavior

Only sent 1 instance report per team

## How to reproduce

1. 
2. 
3. 

## Environment

- PostHog cloud or self-managed?
- PostHog version/commit

## Additional context



#### *Thank you* for your bug report – we love squashing them!

posthog/celery.py
sender.add_periodic_task(crontab(day_of_week="mon", hour=15), send_weekly_email_report.s())
    sender.add_periodic_task(crontab(day_of_week="fri"), clean_stale_partials.s())
    if not check_ee_enabled():
        sender.add_periodic_task(15 * 60, calculate_cohort.s(), name="debug")
        sender.add_periodic_task(600, check_cached_items.s(), name="check dashboard items")
    else:
        
        sender.add_periodic_task(120, clickhouse_lag.s(), name="clickhouse event table lag")
    if settings.ASYNC_EVENT_ACTION_MAPPING:
        sender.add_periodic_task(
            (60 * ACTION_EVENT_MAPPING_INTERVAL_MINUTES),
            calculate_event_action_mappings.s(),
            name="calculate event action mappings",
            expires=(60 * ACTION_EVENT_MAPPING_INTERVAL_MINUTES),
        )
@app.task(ignore_result=True)
def redis_heartbeat():
    get_client().set("POSTHOG_HEARTBEAT", int(time.time()))
@app.task(ignore_result=True)
def clickhouse_lag():
    if check_ee_enabled() and settings.EE_AVAILABLE:
        from ee.clickhouse.client import sync_execute
        QUERY = """select max(_timestamp) observed_ts, now() now_ts, now() - max(_timestamp) as lag from events;"""
        lag = sync_execute(QUERY)[0][2]
        g = statsd.Gauge("%s_posthog_celery" % (settings.STATSD_PREFIX,))
        g.send("clickhouse_even_table_lag_seconds", lag)
    else:
        pass
@app.task(ignore_result=True)
def redis_celery_queue_depth():