Skip to content
The site is slow or unstable

Your host is throttling the site

Many shared hosting plans limit CPU and the number of processes. How to see whether your site hits those limits.

You need
Hosting panel
Updated

On shared hosting your site shares a server with many other customers, and each account gets a fixed share of CPU, memory and number of processes. When the site reaches one of the limits, it's slowed down, or the server turns away new requests until the load drops. You notice it when the site is slow at times, or when visitors get errors such as 508 Resource Limit Is Reached, 500 or 503.

Cached pages use very little of the server, so ordinary visitors rarely push the site over the limits. Bots, login attempts, heavy scheduled tasks and uncached pages do.

Recognise the signs

  • The site is fast most of the time, but slow or down for periods, even though nothing has changed.
  • Visitors get the "Resource Limit Is Reached" page, which means the account has too many simultaneous requests.
  • The site returns error 500 or 503 for a while and then recovers without anyone doing anything.
  • The dashboard is slow at the same time as the site is slow for visitors.

Check the cache and limits in WordPress

Go to Tools → Site Health:

  1. If it says no page cache was detected, the server has to run PHP and query the database for every single page view. Turn on a cache plugin or your host's cache before you do anything else.
  2. Under the Info tab → Server you see "PHP memory limit" and "PHP time limit". These limits apply to each request, not to the whole account, but they give an idea of what your hosting plan allows.

See resource usage in the hosting panel

Many shared hosting providers use CloudLinux. In cPanel, the page is then called Resource Usage. It shows usage, limit and the number of times the limit was hit (Faults) for each resource:

  • SPEED is CPU. When the limit is reached, processes are slowed down. The site gets slow without an error message.
  • EP is the number of simultaneous requests running PHP. When the limit is reached, visitors get error 508.
  • NPROC is the number of processes. When the limit is reached, the site may return error 500 or 503.
  • PMEM is memory. When the limit is reached, the system stops processes, and the site may return error 500 or 503.
  • IO is reading from and writing to disk. When the limit is reached, everything gets slower.

If a resource has many Faults when the site is slow, that is the limit you're hitting. If your host uses a different panel, you can ask the provider to show you the resource usage and when the limits were last reached.

Find out what is using the resources

Download the access log from your hosting panel for a period when the limit was reached, and see which URLs get the most requests, and from which IP addresses:

  • Many lines with POST /wp-login.php and POST /xmlrpc.php are bots trying to log in.
  • Many requests to wp-cron.php, or spikes at fixed times of day, point to scheduled tasks.
  • Many requests to admin-ajax.php come from the dashboard or from plugins.
  • Many requests in a short time from one IP address to lots of different pages come from a search engine or another bot crawling the whole site. The user agent shows which bot it is. You want Googlebot and Bingbot, but you can restrict aggressive crawlers, including some AI crawlers, in robots.txt or block them in Cloudflare.

Stop the unnecessary traffic first. It's cheaper than a bigger hosting plan, and it may be enough to keep the site under the limits.

When ordinary visitors are the cause

If the access log shows that ordinary visitors push the site over the limits, the hosting plan is too small for the site. You'll have to upgrade the plan, or move the site to a server with dedicated resources. If your hosting panel shows no resource usage, ask your hosting provider directly which limits apply to your account, and when they were last reached.