I started looking into this, because all http responses take at least 700ms even for “hello world” returned by the app server.
Response headers include:
fly-request-id: xxxxxxx-gru
for both my apps and the Fly.io dashboard. Example timing for the fly.io dashboard:
Scheduling:
Queued 0.9ms
Response:
Waiting 967.2ms
Download 254.7ms
Totals:
Time to First Byte 969.5ms
Start to Finish 1224.2ms
but this is roughly consistent with my results of ~200ms to the load balancer and ~400ms of internal routing.
MTR:
7. poznh002rt09.inetia.pl 0.0% 16 22.6 22.7 20.9 27.9 1.6
8. 83-238-248-196.static.inetia.pl 0.0% 16 23.8 22.8 21.7 24.4 0.8
9. (waiting for reply)
10. (waiting for reply)
11. (waiting for reply)
12. ip-66-241-124-87.shared.customer.flyio.net 0.0% 16 202.9 204.0 201.8 206.5 1.3
ping stays around <25ms within the ISP network, then there’s a gap, and the ping to final visible server is ~200ms.
Regions of my machines are LHR and FRA. The results are roughly the same between my custom domain, *.fly.dev and fly.io
Chat says most of the delay is incurred due to routing to São Paulo then back to the region (which is intentionally close to the original sender) then back to São Paulo then back to Poland, each leg is ~200ms, and the timings from browser dev tools and MTR are in agreement.