Either optimising the main app or caching with Redis/Memcached can seriously reduce the number of instances & improve the 133 req/sec per server metric as well.
It sounds like they are already caching but the problem is what happens when the number of possible queries is so high, you cannot cache them all and also on "live" apps like the football ones, the result of the query might change relatively quickly so can't be cached.
What might be possible is double-level caching, so you cache underlying data and then query from that, the results of which are also cached.
Depends how fast your data changes.
SWR can be very effective for that.
I suggest having a look at GraphCDN (bias alert, I’m one of the founders, so take it with some salt ;)
What might be possible is double-level caching, so you cache underlying data and then query from that, the results of which are also cached.