Connection timeout
Your server isn't replying at all — requests vanish without a response until the timeout window closes. Your site shows as Down in DomainDash.
Symptom
- DomainDash marks the uptime check as Down with error code
connection_timeout - Browser shows "ERR_CONNECTION_TIMED_OUT" or "This site can't be reached" after a long wait (typically 30+ seconds)
- Running
curl -v --max-time 30 https://example.comhangs until it eventually times out with "Operation timed out" - Unlike a connection refusal, there is no instant failure — the request disappears without a reply
What it means
A timeout means DomainDash sent a request and waited — up to roughly 10–30 seconds — but received nothing back. This is the opposite of a connection refused error, where the server replies immediately with "no". Here, the server either accepted the TCP connection and then went silent, or the request never arrived at all because something on the network swallowed it.
The root cause is almost always one of three things: the server is overwhelmed and can't process requests in time, an application or dependency is deadlocked, or a firewall is silently dropping packets instead of actively refusing them (a "black hole" route).
This is also different from a slow response: a slow response means the server eventually replied but took too long. A timeout means no reply arrived within the window at all.
Common causes
- Server CPU or memory is exhausted — the OS can't schedule the request in time
- Application is deadlocked or blocked on a long-running database query or external API call
- An upstream dependency (database, cache, third-party API) is down or very slow, causing every request to queue and wait
- A firewall or security group is silently dropping packets rather than actively refusing them — often a misconfigured rule or an accidental "deny all" added to a cloud security group
- The server is under a distributed denial-of-service (DDoS) attack or unusual traffic spike
- An oversaturated network link — the server's provider is experiencing congestion
How to fix
Confirm it's a timeout, not a refusal. Run:
bashcurl -v --max-time 30 https://example.comA timeout hangs silently and then fails after the time limit expires. If it fails instantly with "Connection refused", see the connection refused page instead.
Check server CPU and memory. SSH in and run:
bashtopLook for CPU at or near 100%, memory so full the system is swapping, or any process in
Dstate (uninterruptible sleep, usually waiting on disk I/O). For a quick five-second snapshot:bashvmstat 1 5If the server is overloaded, the most immediate fix is to restart the application process and investigate whether you need to scale up.
Check application and dependency health. Review recent application logs for stuck requests or error storms. For PostgreSQL, find long-running or waiting queries:
bashSELECT pid, now() - pg_stat_activity.query_start AS duration, query FROM pg_stat_activity WHERE state = 'active' ORDER BY duration DESC;For MySQL:
SHOW PROCESSLIST;. A query running for several minutes is a strong indicator.Look for traffic spikes or a DDoS. Check your web server access logs:
bashtail -100 /var/log/nginx/access.logA flood of requests from a small number of IPs, or a sudden spike in overall request rate, can exhaust the server's connection pool. Consider enabling rate-limiting, or temporarily blocking the source ranges at your firewall or CDN.
Restart and re-verify. Once you've identified the cause, restart the affected process:
bashsudo systemctl restart nginx # or your application process manager, e.g. pm2 restart allThen confirm the server replies promptly:
bashcurl -v --max-time 10 https://example.com
How to verify
After fixing:
- Run
curl -v --max-time 10 https://example.com— it should return a response within a few seconds. - Load the site in a fresh browser window — it should load normally.
- In DomainDash, go to the site's uptime tab and click "Check now". Status should flip from Down to Healthy.
Related
- Connection refused — if the request fails instantly rather than hanging
- Site responding slowly — if the server does eventually reply, but takes too long
- Site is down — if you're not sure which uptime issue you have
- Uptime — how DomainDash runs uptime checks
