If you’re running a WordPress website and suddenly notice that your hosting resources—especially I/O usage—are hitting their limits, a hidden culprit might be at work: wp_image_process_cron
. This seemingly small scheduled task can become a major performance bottleneck, even for small websites with only a few images.
Let’s take a deeper look at what’s going on and how to fix it.
What Is wp_image_process_cron
?
wp_image_process_cron
is a scheduled task in WordPress that automatically processes newly uploaded images. When an image is uploaded to the media library, WordPress creates multiple copies of that image in various sizes (e.g., thumbnail, medium, large). Additionally, your theme and plugins can register custom image sizes, which increases the number of generated image versions.
In your case, it’s further tied to a process:WP_Background_Process_Astra->handle_cron_healthcheck()
,
which is likely coming from the Astra theme or a related Astra plugin, using background processing.

Why Is It So Resource-Intensive?
Your hosting provider reported that this cron job is consuming 8 MB per second of read/write bandwidth on your cPanel hosting—which is extremely high for a small website.
Here’s why this may be happening:
- Too Many Image Sizes Being Generated
WordPress by default creates several sizes of an uploaded image. Add to that your theme (Astra) and plugins, and the number can reach 15–30 versions per image. - Background Image Processing (Astra)
Astra uses a background processor that handles image tasks in the background via scheduled cron events, which can consume a lot of I/O. - Disabled Default WP Cron (DISABLE_WP_CRON)
SinceDISABLE_WP_CRON
is set to true, WordPress cron jobs don’t run with page loads. Instead, they’re triggered via real cron jobs (e.g., from cPanel), which may cause a large backlog of image processing jobs to run all at once. - Backlogged Tasks Running at Once
Ifwp_image_process_cron
hasn’t run in a while, all the pending image processing tasks can pile up and run simultaneously, causing heavy disk usage.
Is It Safe to Run It Weekly or Monthly?
Yes, it’s absolutely safe—especially if you rarely upload new images. Since the cron is mainly used to process image uploads, reducing its frequency to once a week or even once a month is fine and won’t harm your website.
You can set a custom cron job in cPanel to run it weekly like this:
shCopyEdit0 2 * * 0 wget -q -O - https://yourdomain.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
Solutions: How to Fix or Minimize the wp_image_process_cron Impact
Let’s go through a step-by-step approach to solving this issue.
✅ 1. Reduce Cron Frequency
You already changed the frequency from 15 minutes to once a day—good move! For small websites, weekly or even monthly is usually more than enough.
✅ 2. Disable Unused Image Sizes
Disable unnecessary image sizes that are being generated during uploads. You can add this code to your theme’s functions.php
file:
phpCopyEditfunction remove_extra_image_sizes() {
remove_image_size('medium_large');
remove_image_size('1536x1536');
remove_image_size('2048x2048');
}
add_action('init', 'remove_extra_image_sizes');
Also, use a filter to only allow the image sizes you actually use:
phpCopyEditadd_filter('intermediate_image_sizes', function($sizes) {
return ['thumbnail', 'medium', 'large']; // Keep only essential sizes
});
✅ 3. Use an Image Optimization Plugin
Instead of relying on WordPress to generate thumbnails and optimize images, offload that task to a plugin that uses external servers:
These plugins compress and resize images during upload and often allow disabling the default WordPress image sizes.
✅ 4. Disable Astra’s Background Cron (Advanced)
Since your log mentions WP_Background_Process_Astra
, the Astra theme may be using its own custom background task for image health checks.
You can try disabling it manually by adding this (carefully) to functions.php
:
phpCopyEditremove_action('init', 'astra_image_process_cron_hook');
Or, contact Astra support and ask how to properly disable the background image processor if it’s not needed.
✅ 5. Monitor Scheduled Tasks (For Developers)
Install the Action Scheduler plugin or use WP Crontrol to review all scheduled cron jobs.
Pending or stuck background tasks can repeatedly run and eat up I/O. Delete any old or stuck jobs related to image processing.
✅ 6. Use Caching and Offload Media (Optional)
To reduce backend processing:
- Use a full-page caching plugin like LiteSpeed Cache, WP Rocket, or W3 Total Cache.
- Use a CDN (like Cloudflare or BunnyCDN) to serve images and reduce server load.
- Consider offloading your media to an external storage service like Amazon S3, DigitalOcean Spaces, or even Google Drive (with plugins).
Bonus Tips
- 🔍 Use the Site Health tool in WordPress to check for background activity or cron issues.
- 🔧 Install Query Monitor plugin to see what’s going on under the hood.
- 📉 Pre-optimize your images using tools like TinyPNG before uploading.
Final Thoughts
wp_image_process_cron
isn’t inherently bad—it’s part of how WordPress handles media. However, on certain hosts (especially shared cPanel hosting), it can cause major performance issues when it runs unchecked.
By reducing frequency, disabling unused image sizes, and optionally offloading image processing to plugins or external services, you can eliminate the resource spikes and keep your site running smoothly.
If the problem still persists, consider switching to a lighter theme or a host that gives better resource isolation and cron control.
Comments