You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The dashboard page (GET /) renders every analysis in the database unpaginated. On a production cluster with ~950 analyses, each page load takes 55-70 seconds (TTFB), measured via curl inside the web container.
Root cause: PagesController#dashboard runs multiple aggregate queries against the os_docker.data_points collection (706k documents, avg 268 KB each) without any filter, limit, or cursor. Each aggregate is a COLLSCAN of the full collection — roughly 185 GB of logical I/O per call. There are ~14 such aggregate calls per page render.
Reproduction
Deploy openstudio-server chart with ~950+ analyses and ~700k data points
Problem
The dashboard page (
GET /) renders every analysis in the database unpaginated. On a production cluster with ~950 analyses, each page load takes 55-70 seconds (TTFB), measured viacurlinside the web container.Root cause:
PagesController#dashboardruns multiple aggregate queries against theos_docker.data_pointscollection (706k documents, avg 268 KB each) without any filter, limit, or cursor. Each aggregate is a COLLSCAN of the full collection — roughly 185 GB of logical I/O per call. There are ~14 such aggregate calls per page render.Reproduction
curl -w '%{time_starttransfer}' http://<web-service>/Control route (
/__kube_probe__— intentionally returns 404): 2-4 ms.Impact
GET /, so failure detection took ~35 minutesProposed fixes
os_docker.data_points.analysis_idif one doesn't already existCache-Controlheaders) for the dashboard responseEnvironment
Related