summary refs log tree commit diff
path: root/synapse/app/homeserver.py
diff options
context:
space:
mode:
authorNeil Johnson <neil@fragile.org.uk>2018-05-15 17:01:33 +0100
committerNeil Johnson <neil@fragile.org.uk>2018-05-15 17:01:33 +0100
commit05ac15ae824cc538b869e3cc8db7af2ac22e6754 (patch)
treee0df99cd94840ce5e811d812919d030c7c1944b3 /synapse/app/homeserver.py
parentinstead of inserting user daily visit data at the end of the day, instead ins... (diff)
downloadsynapse-05ac15ae824cc538b869e3cc8db7af2ac22e6754.tar.xz
Limit query load of generate_user_daily_visits
The aim is to keep track of when it was last called and only query from that point in time
Diffstat (limited to 'synapse/app/homeserver.py')
-rwxr-xr-xsynapse/app/homeserver.py21
1 files changed, 7 insertions, 14 deletions
diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py

index bfc79a5e81..f25eaf9ffc 100755 --- a/synapse/app/homeserver.py +++ b/synapse/app/homeserver.py
@@ -476,23 +476,16 @@ def run(hs): " changes across releases." ) - # def recurring_user_daily_visit_stats(): - def generate_user_daily_visit_stats(): hs.get_datastore().generate_user_daily_visits() - # Since user daily stats are bucketed at midnight UTC, - # and user_ips.last_seen can be updated at any time, it is important to call - # generate_user_daily_visit_stats immediately prior to the day end. Assuming - # an hourly cadence, the simplist way is to allign all calls to the hour - # end - end_of_hour = datetime.datetime.now().replace(microsecond=0, second=0, minute=0) \ - + datetime.timedelta(hours=1) \ - - datetime.timedelta(seconds=10) # Ensure method fires before day transistion - - time_to_next_hour = end_of_hour - datetime.datetime.now() - clock.call_later(time_to_next_hour.seconds, - clock.looping_call(generate_user_daily_visit_stats, 60 * 60 * 1000)) + def recurring_user_daily_visit_stats(): + clock.looping_call(generate_user_daily_visit_stats, 60 * 60 * 1000) + + # Rather than update on per session basis, batch up the requests. + # If you increase the loop period, the accuracy of user_daily_visits + # table will decrease + clock.looping_call(generate_user_daily_visit_stats, 5 * 60 * 1000) if hs.config.report_stats: logger.info("Scheduling stats reporting for 3 hour intervals")