@laf should bill-calculate be pulling all of the last 24 periods? That appears to be the case for me – and after the fourth or so period on a given bill the response time skyrockets. e.g., Using debug flag shows it pulling Feb, Jan, Dec bill_history after the ‘Updated history!’
SQL[SELECT * FROM `bills` ORDER BY `bill_id` [] 4.67ms]
3 BACKBONE:XXXXXXXXXX
SQL[SELECT * FROM `bill_history` WHERE bill_id = ? AND bill_datefrom = ? AND bill_dateto = ? LIMIT 1 [3,"20260301000000","20260331235959"] 1.05ms]
SQL[SELECT SUM(period) as `period`, MAX(in_delta) as `peak_in`, MAX(out_delta) as `peak_out` FROM bill_data WHERE bill_id = ? AND timestamp > ? AND timestamp <= ? [3,"20260301000000","20260331235959"] 0.14ms]
SQL[SELECT SUM(period) as period, SUM(delta) as total, SUM(in_delta) as inbound, SUM(out_delta) as outbound FROM bill_data WHERE bill_id = ? AND timestamp > ? AND timestamp <= ? [3,"20260301000000","20260331235959"] 0.1ms]
SQL[SELECT (SUM(in_delta) / SUM(period) * 8) as rate, FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(`timestamp`) / 300) * 300) AS bucket_start, DATE_ADD(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(`timestamp`) / 300) * 300), INTERVAL 5 MINUTE) AS bucket_end,SUM(in_delta) as delta_sum FROM bill_data WHERE bill_id = ? AND timestamp > ? AND timesta
mp <= ? GROUP BY bill_id, bucket_start ORDER BY rate ASC [3,"20260301000000","20260331235959"] 0.34ms]
SQL[SELECT (SUM(out_delta) / SUM(period) * 8) as rate, FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(`timestamp`) / 300) * 300) AS bucket_start, DATE_ADD(FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(`timestamp`) / 300) * 300), INTERVAL 5 MINUTE) AS bucket_end,SUM(out_delta) as delta_sum FROM bill_data WHERE bill_id = ? AND timestamp > ? AND times
tamp <= ? GROUP BY bill_id, bucket_start ORDER BY rate ASC [3,"20260301000000","20260331235959"] 0.31ms]
2026-03-01 00:00:00 to 2026-03-31 23:59:59 CDR 20 Gbps 428.04 Mbps 2.14%SQL[UPDATE `bills` set `rate_95th`=?,`rate_95th_in`=?,`rate_95th_out`=?,`dir_95th`=?,`total_data`=?,`total_data_in`=?,`total_data_out`=?,`rate_average`=?,`rate_average_in`=?,`rate_average_out`=?,`bill_last_calc`=NOW() WHERE `bill_id` = ? [4280
37634.71,269459233.39,428037634.71,"out","68821374566643","30853948962571","37967425604072",326635352.00173706,146436925.2066306,180198426.7951065,3] 0.19ms]
Updated! SQL[UPDATE `bill_history` set `rate_95th`=?,`rate_95th_in`=?,`rate_95th_out`=?,`dir_95th`=?,`rate_average`=?,`rate_average_in`=?,`rate_average_out`=?,`traf_total`=?,`traf_in`=?,`traf_out`=?,`bill_peak_out`=?,`bill_peak_in`=?,`bill_used`=?,`bill_overuse`=?,`bill_percent`=?,`updated`=NOW() WHERE `bill_hist_id` = ?
[428037634.71,269459233.39,428037634.71,"out",326635352.00173706,146436925.2066306,180198426.7951065,"68821374566643","30853948962571","37967425604072",511902204310,399480935322,428037634.71,"0",2.14,5733] 0.23ms]
Updated history!
SQL[SELECT * FROM `bill_history` WHERE bill_id = ? AND bill_datefrom = ? AND bill_dateto = ? LIMIT 1 [3,"20260201000000","20260228235959"] 0.21ms]
SQL[SELECT SUM(period) as `period`, MAX(in_delta) as `peak_in`, MAX(out_delta) as `peak_out` FROM bill_data WHERE bill_id = ? AND timestamp > ? AND timestamp <= ? [3,"20260201000000","20260228235959"] 0.1ms]
SQL[SELECT * FROM `bill_history` WHERE bill_id = ? AND bill_datefrom = ? AND bill_dateto = ? LIMIT 1 [3,"20260101000000","20260131235959"] 0.95ms]
SQL[SELECT SUM(period) as `period`, MAX(in_delta) as `peak_in`, MAX(out_delta) as `peak_out` FROM bill_data WHERE bill_id = ? AND timestamp > ? AND timestamp <= ? [3,"20260101000000","20260131235959"] 0.11ms]
SQL[SELECT * FROM `bill_history` WHERE bill_id = ? AND bill_datefrom = ? AND bill_dateto = ? LIMIT 1 [3,"20251201000000","20251231235959"] 0.88ms]
SQL[SELECT SUM(period) as `period`, MAX(in_delta) as `peak_in`, MAX(out_delta) as `peak_out` FROM bill_data WHERE bill_id = ? AND timestamp > ? AND timestamp <= ? [3,"20251201000000","20251231235959"] 0.12ms]
That appears to be the root cause for everything.