A step-by-step method for isolating whether a slow or failing request is a network problem, a proxy/load-balancer problem, or an application problem — before you start reading application logs.
A request to a service is slow, times out, or returns an error, and it isn't immediately clear which layer is responsible: the network path itself, a load balancer or reverse proxy in front of the application, or the application process handling the request.
Roughly in order of how often each turns out to be the actual cause:
Work from the outside in — confirm each layer before assuming the next one is the problem:
Confirm DNS resolves correctly.
nslookup the-hostname
If this returns an unexpected or stale IP, stop here — see How DNS Resolution Actually Works.
Confirm basic network reachability to the resolved IP, not just the hostname.
ping the-ip-address
tracert the-ip-address
tracert shows every hop the request takes — useful for spotting exactly where a path stops responding, though many hops legitimately don't reply to it and that alone isn't proof of a problem.
Test the actual HTTP layer directly, bypassing anything higher-level like a browser.
curl -v https://the-hostname/
The -v flag shows you the full request/response including TLS handshake detail and headers — read the status code returned (see HTTP Status Codes You'll Actually See in Production) as your next signal.
Check whether the proxy/load balancer or the application is answering. A 502/504 from a proxy in front of the app strongly suggests the application itself (crashed or too slow), not the network — see IIS Application Pools if IIS is in the chain. A connection that never completes at all, with no HTTP response whatsoever, points further back toward network or firewall issues.
Check the application's own health directly, if you can reach it without going through the proxy (a direct port, a health-check endpoint). If the app responds fine directly but not through the proxy, the proxy configuration itself is the suspect — check its timeout settings and backend health checks.
Escalate to network/infrastructure teams specifically when: tracert shows the request consistently failing at a hop under your organization's control (not just the public internet, where many hops routinely don't respond), or when the application responds correctly on a direct, un-proxied connection but fails specifically when routed through a shared load balancer or firewall that other teams manage. Escalate to the application/development team when the app is reachable and clearly the source (slow queries, exceptions in logs, crashing) — bringing them the specific evidence from steps 3-5 above, rather than "the site is slow," makes their investigation immediately faster.
Once you've isolated which layer is responsible, Root Cause Analysis: A Simple Framework covers how to go from "found the layer" to "found the actual fix." If the isolation above points at the application, Monitoring 101 covers which observability tool to reach for next.
Part of: Support Engineers, System Administrators