A "connection timed out" error on a WordPress site almost always means something in the request chain took too long to respond: a slow plugin or theme function, a stalled call to an external API, a database query that never returned, or a server-side execution limit that cut the request off. Start by figuring out where the request is actually stalling before you change anything.
The fastest way to narrow it down is to disable plugins and switch to a default theme, exactly as you would for a white screen. If disabling everything fixes the timeout, you've confirmed it's application-level, not server-level. You can re-enable plugins one at a time to find the culprit. See Fixing the WordPress white screen of death for the disable-and-test steps; they apply here too.
The three most likely causes
A plugin or theme function that's hanging
This is the most common cause by far. A plugin making a slow database query, running a loop over a large dataset, or waiting on a lock can hold the request open well past what a visitor's browser (or a load balancer in front of it) will wait for. Turn on debug logging first:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Reload the page that's timing out and check /wp-content/debug.log. If nothing useful shows up because the process is timing out before it can log an error, that itself is a clue: something is looping or blocking rather than throwing a catchable PHP error. Disable plugins one at a time until the timeout stops.
A call to a slow or unreachable external API
Plugins that check licenses, pull in social feeds, sync with a payment processor, or fetch remote data on page load are a frequent source of timeouts, especially if the third-party service is slow or briefly down. WordPress's HTTP API has its own timeout, but plugins can override it, and some don't set one sensibly. If you recently installed or updated a plugin that talks to an external service, that's the first place to look. Temporarily deactivating it while you test is the quickest way to confirm.
A database query that's taking too long
A missing index, a huge wp_options table (bloated by a misbehaving plugin storing large autoloaded values), or a query against a large wp_postmeta table can all stall long enough to time out the request. If your debug log shows the page hanging on something database-related, or if phpMyAdmin queries against the same tables feel sluggish, treat it as a database performance issue rather than a plugin bug. Fixing "MySQL server has gone away" and connection limit errors covers a related set of database symptoms worth ruling out, particularly if the timeout coincides with traffic spikes. If the timeout points at a database connection specifically rather than a slow query, Fixing WordPress database connection errors covers that case directly.
Where the execution limit actually lives
PHP's own execution time limit (max_execution_time) is one thing that can cut off a slow request, but it isn't the only clock running. Web server timeouts and any proxy or CDN sitting in front of your site can also cut a connection before PHP itself gives up. On most hosting setups this is worth ruling out if the page never seems to reach PHP at all.
Raising execution limits can mask a slow query or a bad loop rather than fix it. Treat a longer timeout as a last resort once you've identified what's actually slow, not a first move.
When to open a ticket
If you've disabled all plugins and switched to a default theme and the timeout persists, or if the debug log points at something server-side rather than a specific plugin or query, open a ticket from Support in the portal. Include the exact URL that's timing out, roughly when it started, and anything from debug.log you were able to capture. That context lets support check server-level logs directly instead of re-running the same isolation steps you've already done.