The Nginx timing split is the part I would steal for every team: upstream response time under 300 ms against a total request time of almost 80 seconds makes it obvious the API never had the problem, and once both numbers are logged side by side, every future "slow API" report becomes a one-line check. One suspect I would add weight to is the load generator itself — when the generator runs short on CPU or bandwidth, the failure pattern looks exactly like a flaky network, and one in three requests failing rather than all of them slowing down fits that shape. Did you get a chance to check the generator's own resource usage while the test was running?