Meeting 5 - October 15th, 2025

What Got Done

Load Testing Results (Plaintext HTTP)

Single-User Baseline

Users Iterations Throttle Scenario Avg Latency (ms) Max (ms) Fails Runtime Notes
1 100 None createkey 0.52 9 0 ~1 s Baseline sanity check
1 1 000 None createkey 0.09 7 0 ~1 s stable
1 10 000 None createkey 0.04 5 0 ~6 s stable
1 50 000 None createkey 0.04 10 0 ~27 s stable
1 500 000 None createkey 0.05 61 0 ~4.6 min stable
1 1 000 000 None createkey 0.05 82 0 ~8.9 min Stable long run, heaviest endpoint
1 1 000 000 None getversion 0.00 1 0 ~36 s 100% success, lightweight endpoint
1 1 000 000 None getclient 0.00 6 0 ~155 s 100% success, lightweight endpoint

Moderate Load (5 Users)

Users Iterations Throttle Scenario Avg Latency (ms) Max (ms) Fails Runtime Notes
5 10 000 ea None createkey 2.22 658 0 31 s Early concurrency impact
5 50 000 ea None createkey 2.75 882 0 2.8 min Latency variance rising
5 100 000 ea None createkey 3.09 1 097 0 6.0 min Still stable
5 500 000 ea None createkey 3.39 1 588 0 32.4 min Strong sustained performance

High Load (10 Users, No Throttling)

Users Iterations Throttle Scenario Avg Latency (ms) Max (ms) Fails Runtime Notes
10 1 000 ea None createkey 0.07 9 0 10 s Clean short run
10 2 500 ea None createkey 2.51 358 0 18 s Fully stable
10 3 000 ea None createkey 48.09 60 003 9 52 s First timeouts after ~11 k req
10 3 500 ea None createkey 47.02 60 002 9 32 s Instability confirmed
10 5 000 ea None createkey 179.89 60 003 30 2.2 min Server froze after ~10 k req

Higher Load (40 Users, No Throttling)

| Users | Iterations | Throttle | Scenario | Avg Latency (ms) | Max (ms) | Fails | Runtime | Notes | | Users | Iterations | Throttle | Scenario | Avg Latency (ms) | Max (ms) | Fails | Runtime | Notes | |:------|:-----------|:----------|:-----------|:----------------|:-----------|:--------|:----------|:-------| | 40 | 1 000 | None | createkey | 0.07 | 12 | 0 | ~40 s | Fully stable | | 40 | 5 000 | None | createkey | 2.57 | 458 | 40 (0.45%) | ~57 s | Froze after 8900 of the 200,000 runs |


Throttled Load Tests

Users Iterations Throttle Scenario Avg Latency (ms) Max (ms) Fails Runtime Notes
10 3,000 each (30,000 total) 10 req/s per user (≈100 req/s total) createkey 4.27 381 0 ~4,140 s (≈69 min) Fully stable
10 3,000 each (30,000 total) 250 req/s per user (≈2,500 req/s total) createkey 2.18 17 0 ~144 s (≈2.4 min) Fully stable
10 20,000 each (200,000 total) 250 req/s per user (≈2,500 req/s total) createkey 54.7 ≈60,171 70 ≈739 s (12.3 min) Stable for ~7 min, then timeouts

Overall Findings

  • Stable operation up to ≈ 250 req/s with 10-user load for 7 minutes
  • Failures appear all timeouts from tms_server crashing
  • Throughput and latency scale predictably
  • Throttling prevents overload and preserves performance stability.

Road Blockers and Questions

  • When running test for 'getkey', I need the import for 'TMS_PUBLEY_FINGERPRINT'

  • Couldn't figure out how to bypass cert checking while still including encryption

    • Tried to just use ChatGPT to see if the problem can be solved quickly, turn out I need to actually learn it
    • Created a new 'tms_loadtest_modified'
    • Tried to create a custom 'reqwest::Client' that ignores invalid certs
    • Seems like I was getting version incompatability, need to spend more time to fully understand

What's Next

  • Do more research about how to bypass cert checking

  • See if I can run a test that has things fail during, not just when it crashes