I am having some issues with delays between my browser and origin server and I do not know how to continue looking for the error.
For each and every report of issue, in the logs I can see the following:
Timestamp operation url protocol run time
00:00:00 OPTIONS /some/url HTTP/2 0ms
00:01:02 POST /some/url HTTP/1.1 16ms
Basically, a one minute delay between the OPTIONS (which is HTTP/2) and the POST/PUT/GET which is HTTP/1.1. This is also the delay time the user experiences. According to the end user, there is nothing in the F12 logs (developer tools , console/network) on the browser except for the actual calls and it took time.
Most of the times, the OPTIONS comes in as HTTP/1.1 and then the POST/PUT/GET operation is done immediately afterwards and the user is happy.
The main question here is, does Cloudflare now send HTTP/2 requests despite the documentation stating otherwise?
Is HTTP/2 from Cloudflare something that can mess up the loading times between options and the actual call?
Cloudflare only uses HTTP/1.x between the origin web server and Cloudflare.
I do have a lot of hits with HTTP/2 to the server, all coming via Cloudflare, however, most of the calls are just going trough fine. The delays always seem to have OPTIONS HTTP/2 - / HTTP/1.1 as a common factor. I have checked downstream in the system (istio) but there is nothing that suggests the origin server is at fault. No database disconnects, no database long running queries, no nothing. Just the OPTIONS / PUT. Also, the Run time for the PUT is somewhere around 17ms on the ingress gateway and 15ms on the istio-sidecar which suggests everything is responding as it should on the server itself.
I have also bypassed Cloudflare and done HTTP/2 connections directly to the server/api but no issues there.
This is quite difficult to pinpoint since the issue only appears about once every 24h (the timeout for OPTIONS/CORS). According to the end user, this happens in both Chrome and Edge.
What we have done today as a test is to disable gRPC, but I dont think this should have anything to do with the issue but we will not know until tomorrow.
Does anyone have any pointers on how to proceed, also, answer to the question in the topic, should Cloudflare now speak HTTP/2 to origin, and if so, is there any way to disable this (to origin) as to see if this mitigates the issue.