Skip to content

GET /dashboard/attempts becomes slow and huge as the database grows #23

@delan

Description

@delan

With ~71K rows in "attempt" (~29 days worth), the response with no filters or since is over 40 MB, which is very unwieldy, even though the dashboard only makes this request once per page load. The endpoint also takes 380 ms to start sending a response, >210 ms of which is in DashboardDB.select_attempts:

$ time curl -fsSIo /dev/null http://localhost:5001/dashboard/attempts
real    0m0.378s
Oct 31 05:53:14 ci0 intermittent-tracker-staging-start[3257485]: [2024-10-31 05:53:14,419] DEBUG in db: DashboardDB.select_attempts took 216544722 ns
Oct 31 05:53:14 ci0 intermittent-tracker-staging-start[3257485]: 127.0.0.1 - - [31/Oct/2024 05:53:14] "HEAD /dashboard/attempts HTTP/1.1" 200 -

These response times, and the server’s memory usage, also increase greatly under contention:

$ cat a
#!/bin/sh
curl -Io /dev/null https://staging.intermittent-tracker.servo.org/dashboard/attempts

$ chmod +x a
$ yes | xargs -P 16 ./a
Oct 31 06:01:26 ci0 intermittent-tracker-staging-start[3257485]: [2024-10-31 06:01:26,461] DEBUG in db: DashboardDB.select_attempts took 25573638908 ns
Oct 31 06:01:26 ci0 intermittent-tracker-staging-start[3257485]: 127.0.0.1 - - [31/Oct/2024 06:01:26] "HEAD /dashboard/attempts HTTP/1.1" 200 -
Oct 31 06:01:28 ci0 intermittent-tracker-staging-start[3257485]: [2024-10-31 06:01:28,810] DEBUG in db: DashboardDB.select_attempts took 27892397139 ns
Oct 31 06:01:29 ci0 intermittent-tracker-staging-start[3257485]: 127.0.0.1 - - [31/Oct/2024 06:01:29] "HEAD /dashboard/attempts HTTP/1.1" 200 -
Oct 31 06:01:29 ci0 intermittent-tracker-staging-start[3257485]: [2024-10-31 06:01:29,187] DEBUG in db: DashboardDB.select_attempts took 28279068053 ns
Oct 31 06:01:29 ci0 intermittent-tracker-staging-start[3257485]: 127.0.0.1 - - [31/Oct/2024 06:01:29] "HEAD /dashboard/attempts HTTP/1.1" 200 -
[…]
Oct 31 06:01:33 ci0 intermittent-tracker-staging-start[3257485]: [2024-10-31 06:01:33,668] DEBUG in db: DashboardDB.select_attempts took 32682824065 ns
Oct 31 06:01:33 ci0 intermittent-tracker-staging-start[3257485]: 127.0.0.1 - - [31/Oct/2024 06:01:33] "HEAD /dashboard/attempts HTTP/1.1" 200 -
Oct 31 06:01:34 ci0 intermittent-tracker-staging-start[3257485]: [2024-10-31 06:01:34,103] DEBUG in db: DashboardDB.select_attempts took 33074041413 ns
Oct 31 06:01:34 ci0 intermittent-tracker-staging-start[3257485]: 127.0.0.1 - - [31/Oct/2024 06:01:34] "HEAD /dashboard/attempts HTTP/1.1" 200 -
Oct 31 06:01:34 ci0 intermittent-tracker-staging-start[3257485]: [2024-10-31 06:01:34,555] DEBUG in db: DashboardDB.select_attempts took 33596522893 ns
Oct 31 06:01:34 ci0 intermittent-tracker-staging-start[3257485]: 127.0.0.1 - - [31/Oct/2024 06:01:34] "HEAD /dashboard/attempts HTTP/1.1" 200 -

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions