Getting a WordPress site un-suspended after excessive CPU usage comes down to three things: proving you found the cause, proving you fixed it, and asking your host for reinstatement with evidence attached. Most providers will restore access within 2 to 24 hours once you send a credible remediation summary. The part nobody tells you is that a generic “please turn it back on” ticket usually gets you a canned reply and another day of downtime.
Below is the process we walk customers through, including the diagnostic data you should request from support before you change a single line of code.
What a CPU Suspension Actually Means
Shared and entry-level hosting accounts are capped by a resource container, commonly one CPU core and a limit on concurrent PHP workers. When your account pins that core at 100% for sustained periods, the server throttles you first, then suspends the account to protect neighbouring sites.
Suspension is rarely instant. Most hosts send two or three warning emails with timestamps and process snapshots before pulling the plug, which means the evidence you need is often already sitting in your inbox.
Read those warnings closely. They usually name the exact PHP script that spiked, and that single filename shortens the investigation from hours to minutes.
Find the Process Eating Your CPU Before You Reply to Support
Roughly nine out of ten CPU suspensions on WordPress trace back to a short list of culprits. Work through them in order of likelihood:
- wp-cron.php firing on every page load, which turns a busy hour into thousands of duplicate scheduled tasks.
- admin-ajax.php loops from the Heartbeat API, page builders left open in a browser tab, or a chat plugin polling every few seconds.
- Bot and crawler traffic. Automated requests account for close to half of all web traffic according to Cloudflare’s bot traffic research, and uncached crawlers hit PHP on every single request.
- Backup, migration and security plugins running full scans during peak traffic rather than overnight.
- Uncached search and filter queries, especially WooCommerce layered navigation and large taxonomy archives.
- Brute force attempts against wp-login.php or xmlrpc.php, which bypass page caching entirely.
A single poorly behaved plugin can generate more CPU load than a thousand genuine visitors, so resist the urge to blame traffic growth until the logs say so.
The First Message to Send Your Host
Your opening ticket should ask for data, not mercy. Hosts respond faster to a customer who sounds like they’re about to fix the problem themselves.
Request these five items specifically:
- The timestamps of the three worst CPU spikes, in your server’s timezone.
- A top process snapshot or LVE/cgroup report showing which scripts consumed the resources.
- Raw access logs covering those windows, so you can match IPs and user agents to the load.
- Temporary read-only or SSH access, or a staging restore, so you can work while the public site stays offline.
- The exact threshold you breached and what number they want to see before reinstatement.
That last question matters more than people realise. “Stay under 40% average CPU across a rolling hour” is a target you can test against, while “reduce your usage” is not.
A 48-Hour Remediation Plan
Working on a staging copy, not production, gives you room to break things safely. If your workflow supports it, a Git-based deployment setup makes rolling each change back trivial when a fix makes matters worse.
We cover this topic in more depth in Diagnosing Slow WordPress Admin Dashboards (WP-Admin).
Hours 0 to 4: read the access logs, identify the top 10 requesting IPs and the top 5 requested scripts, and note whether the spikes are continuous or scheduled. Scheduled spikes almost always mean cron or a backup job.
Hours 4 to 12: disable wp-cron’s page-load trigger and move it to a real server cron. Add define('DISABLE_WP_CRON', true); to wp-config.php, then schedule wp cron event run --due-now every 5 to 15 minutes. The WordPress developer documentation on cron explains why the default behaviour scales badly, and our breakdown of WP-Cron versus real server cron covers the setup in detail.
Hours 12 to 24: deactivate plugins in batches and watch the load after each batch. Keep a plain text log of what you turned off and when, because that log becomes part of your evidence packet.
Hours 24 to 48: turn full page caching back on, upgrade PHP, block the abusive user agents, and run a controlled load test to confirm the numbers hold.
Fixes That Drop CPU Usage Fastest
Not every optimisation is worth the same. Ranked by effort versus impact, these move the needle hardest on a typical WordPress website:
- Full page caching at the server level, which can take uncached PHP hits from 100% of requests down to under 10%.
- PHP 8.3 or newer, which typically executes WordPress requests measurably faster than PHP 7.4 on the same hardware.
- Object caching with Redis or Memcached to stop repeated database queries on logged-in pages.
- Throttling the Heartbeat API from the default 15 second interval to 60 seconds or disabling it on the front end.
- Blocking xmlrpc.php if no mobile app or Jetpack feature depends on it.
- Rate limiting aggressive crawlers at the firewall or CDN rather than in PHP, where the request has already cost you CPU.
Membership sites, course platforms and busy stores need a different baseline because so little of their traffic is cacheable, which is why they usually sit better on hosting built to scale resources instead of a fixed shared container.
Getting the Site Reinstated
Send a single reply with a short summary rather than five scattered messages. Name the cause, list the changes with timestamps, and state the measured result.
Something like: “Cause was wp-cron firing on every page load alongside an hourly backup scheduled at peak traffic. Cron moved to a server task at 5 minute intervals, backups rescheduled to 03:00 UTC, LiteSpeed page caching enabled, PHP upgraded to 8.3. Staging load test at 200 concurrent users held average CPU at 22%.” That paragraph gets accounts unsuspended.
If support asks for a monitoring period, agree to it. Most hosts lift restrictions permanently after 7 days of clean usage data.
Staying Off the Suspension List
Set up alerting that fires before your host’s does, using server resource graphs or an uptime service that tracks response time. A site creeping from 300ms to 900ms over a fortnight is telling you something a monthly bill never will.
Watch new plugin installs too, particularly AI tools that call external APIs on every page render. If you’re experimenting with that category, our notes on running autonomous AI agents on WordPress cover how to keep those processes off the web worker.
And check the boring stuff: a mail queue backing up can spike CPU just as hard as a bad query, which is one reason we recommend sending WordPress mail through SMTP rather than the local PHP mailer.
Frequently Asked Questions
How Do I Suspend a WordPress Site?
You can suspend public access in under 2 minutes from your hosting control panel by disabling the domain, or at the application level with a maintenance mode plugin. For a permanent takedown, remove the DNS A record and archive the files and database before deleting the account.
How to Make WordPress Run Faster?
Page caching, a modern PHP version and image optimisation together typically cut load times by 50 to 80% on an unoptimised site. After that, the gains come from reducing plugin count, adding object caching and serving static assets from a CDN edge location close to your visitors.
How to Take Your Website Offline in WordPress?
Enable maintenance mode, which returns a 503 status code and keeps search engines from indexing the placeholder, usually a one-click toggle in your hosting dashboard or a plugin. For longer outages beyond a few days, a static holding page uses almost no server resources at all.
Why Is My WordPress Running So Slow?
The three most common causes are missing page caching, an overloaded shared server, and a plugin making slow external API calls on every request. Check your PHP error logs and the query monitor output first, since a single unindexed database query can add several seconds to every page.
Get Your WordPress Site Back Online and Keep It There
If CPU suspensions keep happening on your current plan, the container is probably too small for the site you’ve built. Talk to our team about business WordPress hosting with free migration, or browse the full sitemap to find the plan that matches your traffic.
[…] We cover this topic in more depth in How to Un-suspend a WordPress Site Overusing CPU Resources. […]