Bug 1910613 Comment 7 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

I built a load test that simulates 3 users uploading 10mb payloads full of 1mb sym files.

Load test before landing that change and doing a stage deploy:

```
Tue Jul 30 21:13:41 UTC 2024: Locust end 20240730-210000-aws_stage-normal.
20240730-210000-aws_stage-normal users=3 runtime=4m
Runname: logs/20240730-210000-aws_stage-normal

Requests:
 Name     | Requests | Failures | Req/s | Avg Time (ms) | 50% (ms) | 95% (ms) 
----------+----------+----------+-------+---------------+----------+----------
 /upload/ | 203      | 193      | 0.85  | 2,948.42      | 3,000    | 4,700    

Failures:
 Method | Name     | Error                                             | Occurrences 
--------+----------+---------------------------------------------------+-------------
 POST   | /upload/ | HTTPError('429 Client Error:  for url: /upload/') | 193    
```

Load test after landing that change and doing a stage deploy:

```
Wed Jul 31 00:28:26 UTC 2024: Locust end 20240731-000000-aws_stage-normal.
20240731-000000-aws_stage-normal users=3 runtime=4m
Runname: logs/20240731-000000-aws_stage-normal

Requests:
 Name     | Requests | Failures | Req/s | Avg Time (ms) | 50% (ms) | 95% (ms) 
----------+----------+----------+-------+---------------+----------+----------
 /upload/ | 137      | 0        | 0.58  | 4,652.26      | 4,300    | 6,900    

Failures: None
```

The zip files were 10mb with 1mb sym files. 10 requests vs. 137 requests. That's bonkers--so much better.

Grafana looks good, too:

https://earthangel-b40313e5.influxcloud.net/d/6gimTZ6Vz/tecken-upload-api-metrics?orgId=1&var-env=stage&from=1722385330821&to=1722385918162

In production, payloads are in the 100s of mb range. I changed the load test to simulate 3 users with 100mb zip files with 10mb sym files in it.

```
Wed Jul 31 00:38:38 UTC 2024: Locust end 20240731-000000-aws_stage-normal.
20240731-000000-aws_stage-normal users=3 runtime=4m
Runname: logs/20240731-000000-aws_stage-normal

Requests:
 Name     | Requests | Failures | Req/s | Avg Time (ms) | 50% (ms) | 95% (ms) 
----------+----------+----------+-------+---------------+----------+----------
 /upload/ | 15       | 0        | 0.06  | 39,338.47     | 40,000   | 45,000   

Failures: None
```

Still looks good.

Then I did 5 users with 400mb zip files with 10mb sym files in it. That completely saturated the upload on my Internet connection and so it didn't finish any.

```
Wed Jul 31 00:45:10 UTC 2024: Locust end 20240731-000000-aws_stage-normal.
20240731-000000-aws_stage-normal users=5 runtime=4m
Runname: logs/20240731-000000-aws_stage-normal

Requests:
 Name | Requests | Failures | Req/s | Avg Time (ms) | 50% (ms) | 95% (ms) 
------+----------+----------+-------+---------------+----------+----------

Failures: None
```

Oh well.

I tweaked the load test and landed it:

https://github.com/mozilla-services/tecken-loadtests/pull/33

I think this change is good enough to go to production.
I ran the systemtests 10 times in rapid succession:

```
round 0: elapsed: 0:00:05.332435
round 1: elapsed: 0:00:04.751373
round 2: elapsed: 0:00:04.554610
round 3: elapsed: 0:00:04.767880
round 4: elapsed: 0:00:05.808504
round 5: elapsed: 0:00:04.283236
round 6: elapsed: 0:00:05.042892
round 7: elapsed: 0:00:04.950264
round 8: elapsed: 0:00:04.417888
round 9: elapsed: 0:00:04.812643
```

We went from 1m (best time in comment #4--rest were like 2.5m) to 5s for each test. That's cool.

I built a load test that simulates 3 users uploading 10mb payloads full of 1mb sym files.

Load test before landing that change and doing a stage deploy:

```
Tue Jul 30 21:13:41 UTC 2024: Locust end 20240730-210000-aws_stage-normal.
20240730-210000-aws_stage-normal users=3 runtime=4m
Runname: logs/20240730-210000-aws_stage-normal

Requests:
 Name     | Requests | Failures | Req/s | Avg Time (ms) | 50% (ms) | 95% (ms) 
----------+----------+----------+-------+---------------+----------+----------
 /upload/ | 203      | 193      | 0.85  | 2,948.42      | 3,000    | 4,700    

Failures:
 Method | Name     | Error                                             | Occurrences 
--------+----------+---------------------------------------------------+-------------
 POST   | /upload/ | HTTPError('429 Client Error:  for url: /upload/') | 193    
```

Load test after landing that change and doing a stage deploy:

```
Wed Jul 31 00:28:26 UTC 2024: Locust end 20240731-000000-aws_stage-normal.
20240731-000000-aws_stage-normal users=3 runtime=4m
Runname: logs/20240731-000000-aws_stage-normal

Requests:
 Name     | Requests | Failures | Req/s | Avg Time (ms) | 50% (ms) | 95% (ms) 
----------+----------+----------+-------+---------------+----------+----------
 /upload/ | 137      | 0        | 0.58  | 4,652.26      | 4,300    | 6,900    

Failures: None
```

The zip files were 10mb with 1mb sym files. 10 requests vs. 137 requests. That's bonkers--so much better.

Grafana looks good, too:

https://earthangel-b40313e5.influxcloud.net/d/6gimTZ6Vz/tecken-upload-api-metrics?orgId=1&var-env=stage&from=1722385330821&to=1722385918162

In production, payloads are in the 100s of mb range. I changed the load test to simulate 3 users with 100mb zip files with 10mb sym files in it.

```
Wed Jul 31 00:38:38 UTC 2024: Locust end 20240731-000000-aws_stage-normal.
20240731-000000-aws_stage-normal users=3 runtime=4m
Runname: logs/20240731-000000-aws_stage-normal

Requests:
 Name     | Requests | Failures | Req/s | Avg Time (ms) | 50% (ms) | 95% (ms) 
----------+----------+----------+-------+---------------+----------+----------
 /upload/ | 15       | 0        | 0.06  | 39,338.47     | 40,000   | 45,000   

Failures: None
```

Still looks good.

Then I did 5 users with 400mb zip files with 10mb sym files in it. That completely saturated the upload on my Internet connection and so it didn't finish any.

```
Wed Jul 31 00:45:10 UTC 2024: Locust end 20240731-000000-aws_stage-normal.
20240731-000000-aws_stage-normal users=5 runtime=4m
Runname: logs/20240731-000000-aws_stage-normal

Requests:
 Name | Requests | Failures | Req/s | Avg Time (ms) | 50% (ms) | 95% (ms) 
------+----------+----------+-------+---------------+----------+----------

Failures: None
```

Oh well.

I tweaked the load test and landed it:

https://github.com/mozilla-services/tecken-loadtests/pull/33

I think this change is good enough to go to production.

Back to Bug 1910613 Comment 7