I apologize if the wording was hard to understand - I was sleepy at the time of post. (The original worded post is in the details below)>
The IP that the user connects to indeed have a good connection to both user and the origin server: It has a ping of ~190ms ping from the user and 15ms ping from the server. However, when I test my ping to my server through cloudflare using websocket (which is obviously in-cacheable), the ping is as high as 350ms. I expected that forwarding websocket would add 10ms to the connection, but 150ms more looks suspicious. I tested the websocket overhead with direct connection, and it is neglect-able.
So I logged the IP of incoming request of websocket, and I got an IP that belongs to cloudflare but is different form the one that user resolves to. It has a high ping of 150ms from the server. It seems like the traffic went through the internal network of cloudflare, only to make the latency higher.
I understand this might be unfortunately because geographically nearest data centres do not necessarily mean the one with the lowest ping, but still I was thinking about the IP that user resolves to have a far less ping - it feels like such a huge waste.
And a 350 ms ping is not acceptable of my application, so I want to confirm the options I have now. Is there nothing I can do besides migrate my server or use argo?
My server is located in Europe (on Vultr VPS), and I am having a ping time of 150ms from my server to logged IP address to my server (which I assume is the exit edge server of Cloudflare).
On the other hand, the “entrance” IP (the one that the client resolves to) has a ping of only 15ms from the server (not client). This feels like a huge waste.
Is this normal?
Latency is critical to my application. Although I can migrate my server to other locations, I would really like to consider other options before that. Is there anything I can do to improve this kind of server - CDN latency (the client - cdn latency makes sense for what I tested)?