Server CPU 100%
-
Hello WooCommerce Support,
WooCommerce appears to be maxing out my server CPU resources, just like other recent threads.
The issue started with WC 10.5.1, and continues with the latest update 10.5.2. Yesterday we took the following steps:
- Placed front-end behind Maintenance Mode to block incoming traffic.
- Deactivated all plugins via cPanel File Manager, restored one-by-one, ensuring all were up-to-date, including a fresh install of WC via [ Plugins > Add New ]
- Deactivated and purged LS Cache at server level (because others were reporting issues with LS Cache – it remains deactivated).
- Our host has disabled WP-Cron via [ wp-config ], and added an MU-Plugin to stop Action Scheduler running via admin-ajax async runner.
- Sadly the issue recurs, every time WooCommerce is active.
Please see the following Pastebin for the WC Status Report: https://pastebin.com/8w03iNwf
Looking forward to your assistance as soon as you can, thank you.
-
Hi @leepaulheron,
I can imagine how frustrating it must be to watch your server hit 100% CPU like that, especially after all the careful testing and plugin isolation you’ve already done. You’ve clearly put a lot of effort into narrowing this down, and that kind of thoroughness really helps move things forward.
To get a clearer picture of what WooCommerce might be doing in the background, could you please check the logs and share anything that looks relevant?
You can find them at WooCommerce → Settings → Logs. Once you’re there, look for any recent entries that mention:
- Action Scheduler
- Checkout or order processes
- Background tasks
- Errors or warnings tied to WooCommerce or extensions
That way, we can dig deeper and help pinpoint what’s driving the CPU spike.
Thank you for responding.
Within [ WooCommerce > Status > Logs ] there is a recurring warning [ Action Scheduler migration in progress. The list of scheduled actions may be incomplete ].
Further, in log file [ wc_get_related_products-2026-02-17 ] there are over 2000 lines of identical warnings:
2026-02-17T09:50:10+00:00 ERROR Invalid limit type passed to wc_get_related_products. Expected integer, got string with value: "4"I can paste the whole of today’s log file into Pastebin, but’s just 2000+ lines of the same.
Do let me know how we should proceed, thanks.
Hi @leepaulheron,
Thank you for the detailed follow up, this is really helpful. I can see how concerning it must be to find thousands of repeated log entries alongside a constant CPU spike, especially after the thorough isolation steps you have already taken. Let us work through this methodically.
There are two key things standing out from what you shared:
First, the recurring log entry:
Invalid limit type passed to wc_get_related_products. Expected integer, got string with value: "4"This indicates that somewhere in your setup, likely a theme or extension, the
wc_get_related_products()function is being called with a string instead of an integer. Even though “4” looks correct, WooCommerce expects a strict integer type. If this is being triggered repeatedly, for example during product queries or background processes, it can quickly flood the logs and contribute to high CPU usage.This is not typically caused by WooCommerce core alone. It is usually introduced by custom code, a theme override, or a third party plugin hooking into related products.
Second, the Action Scheduler warning:
Action Scheduler migration in progress. The list of scheduled actions may be incompleteIf the migration is stuck or repeatedly attempting to run, that can also create heavy background processing and CPU load, especially if WP Cron has been disabled and a custom MU plugin is altering how async runners work.
Here is how I recommend proceeding:
- Please run a full plugin and theme conflict test, even if one was done earlier. On a staging site if possible, or during a maintenance window on production:
• Switch to a default theme such as Storefront or Twenty Twenty Four
• Deactivate all plugins except WooCommerce
• Clear all caches, server cache included
• Monitor CPU usage and logsIf the errors stop, reactivate plugins one by one, testing after each activation, until the log entries return. That will pinpoint the source.
- If you are using any custom snippets, for example via Fluent Snippets or in functions.php, temporarily disable them as well, since this type mismatch often comes from custom filters.
- Go to WooCommerce → Status → Tools and:
• Clear WooCommerce transients
• Regenerate the product lookup tables
• If available, run any Action Scheduler migration or cleanup toolsYou can also review Scheduled Actions at: WooCommerce → Status → Scheduled Actions, and check whether there are large numbers of pending or failed actions. Documentation for reference: https://woocommerce.com/document/understanding-the-woocommerce-system-status-report/scheduled-actions/
If possible, please also share a snapshot of the Scheduled Actions screen and confirm whether the
wc_get_related_productserror still occurs with only WooCommerce active and a default theme. You can share screenshots via https://snipboard.io and any logs via https://pastebin.com so the thread stays clean and easy to review.Once we isolate whether this is theme, custom code, or extension related, we can guide you more precisely. Looking forward to your update so we can get this fully resolved.
Thank you for the comprehensive directions.
This will take a while, so leave it with me, and i’ll get back to you once complete.
All the best, and thanks.
Hi @leepaulheron,
That sounds good, take your time and work through the tests carefully. When you’re done, just share what you find from the default theme and WooCommerce only test, plus anything notable under Scheduled Actions. We’ll take it from there and keep narrowing this down together.
So the results of the conflict test, along with server error logs, pointed to the third-party plugin [ Shopkeeper Extender ], which is a required plugin for the premium Shopkeeper theme by GetBowtied.
In fact, there were over 185000 log entries showing PHP errors relating to that plugin alone, despite it being up-to-date, and showing nothing on smoke tests via [ plugintests.com ] – I have notified the plugin author via the official support, and am waiting to hear.
Over the last couple of hours I have rebuilt the plugins folder gradually, leaving out [ Shopkeeper Extender ]. With the exception of a CPU spike caused by WooCommerce regenerating thumbnails (due to the switch to a default theme and back again), all appears to be within normal limits.
Since removing that plugin, all error logging has ceased. I am cautiously optimistic.
Since the site has a LOT of images, I will leave it in maintenance mode overnight to allow the regeneration to complete, then put it live tomorrow morning and report back.
If you could please leave this ticket open, I will update in the morning. Thanks very much.
Hi there,
Thanks for the detailed update and for sharing the results of your conflict testing. It’s great that you were able to identify [Shopkeeper Extender] as the source of the PHP errors and that removing it has stabilized the site.
It makes sense to leave the site in maintenance mode overnight while thumbnails are being regenerated, especially given the large number of images. That’s a good precaution to ensure everything completes without causing further issues.
We’ll leave this ticket open as requested. Please update us tomorrow once the site is live again so we can review the results and provide any further guidance if needed.
Thanks again for your thorough troubleshooting and for keeping us informed it’s very helpful.
Good morning.
Further to this thread, it seems the site was showing CPU spikes overnight, and the server [ error_log ] is now showing repeated [ WordPress database error Commands out of sync; you can’t run this command now ].
The logs also show references to JetPack – which is not installed on this site.
Link to full error log here: https://pastebin.com/jAjX5RBV
Thanks for your attention, and I hope we can get to the bottom of this.
Sorry, Pastebin santitized and removed the log. Apologies. Here is one example:
[18-Feb-2026 00:06:44 UTC] WordPress database error Commands out of sync; you can't run this command now for query SELECT p.ID FROM wp_posts p WHERE post_type='scheduled-action' AND p.post_title='wc_schedule_pending_batch_processes' AND p.post_status IN ('in-progress', 'pending') ORDER BY p.post_date_gmt ASC LIMIT 0, 1 made by shutdown_action_hook, do_action('shutdown'), WP_Hook->do_action, WP_Hook->apply_filters, Automattic\WooCommerce\Internal\BatchProcessing\BatchProcessingController->Automattic\WooCommerce\Internal\BatchProcessing\{closure}, Automattic\WooCommerce\Internal\BatchProcessing\BatchProcessingController->remove_or_retry_failed_processors, call_user_func, as_has_scheduled_action, ActionScheduler_Store->query_action, ActionScheduler_HybridStore->query_actions, ActionScheduler_wpPostStore->query_actionsHi there!
Thanks for sharing the error log. The “Commands out of sync; you can’t run this command now” message you’re seeing usually appears when there are corrupted Action Scheduler records or conflicts with other plugins.
Since you mentioned running a conflict test, could you please confirm whether all plugins except WooCommerce were disabled when this error occurred and when the CPU spikes happened overnight? This helps isolate whether the issue is coming from WooCommerce core or another plugin.
One supported step that often resolves corrupted Action Scheduler tables is to use a WooCommerce analytics plugin. Installing it will regenerate the Action Scheduler tables, which can fix corruption without affecting your data.
Once that’s in place, you can monitor the site to see if the database errors and CPU spikes persist.
Hello,
The plugin you mention is in Beta, so i’m not comfortable installing that at present, apologies.
Attached is the link to the latest WC Status Report, which shows the current plugin list and environment – https://pastebin.com/MznFAxc0
As per this thread, we completed conflict testing yesterday, which identified an issue with [ Shopkeeper Extender ]. The site remains in maintenance mode pending the solution of this issue.
Do let me know your thoughts, and thank you.
I have now manually run all past-due actions, which all appear to have completed successfully.
However, the most recent errors in the [ error_log ] shows the following:
[18-Feb-2026 11:03:56 UTC] WordPress database error Commands out of sync; you can't run this command now for query SELECT option_name, option_value FROM wp_options WHERE option_name IN ('_transient_timeout_jetpack_autoloader_plugin_paths') made by shutdown_action_hook, do_action('shutdown'), WP_Hook->do_action, WP_Hook->apply_filters, Automattic\Jetpack\Autoloader\jp6b58e44f39d45cbcc950226f1149a5ce\al5_0_15\Shutdown_Handler->__invoke, Automattic\Jetpack\Autoloader\jp6b58e44f39d45cbcc950226f1149a5ce\al5_0_15\Plugins_Handler->cache_plugins, set_transient, wp_prime_option_caches
[18-Feb-2026 11:03:56 UTC] WordPress database error Commands out of sync; you can't run this command now for query SELECT autoload FROM wp_options WHERE option_name = '_transient_jetpack_autoloader_plugin_paths' LIMIT 1 made by shutdown_action_hook, do_action('shutdown'), WP_Hook->do_action, WP_Hook->apply_filters, Automattic\Jetpack\Autoloader\jp6b58e44f39d45cbcc950226f1149a5ce\al5_0_15\Shutdown_Handler->__invoke, Automattic\Jetpack\Autoloader\jp6b58e44f39d45cbcc950226f1149a5ce\al5_0_15\Plugins_Handler->cache_plugins, set_transient, update_option
[18-Feb-2026 11:03:56 UTC] WordPress database error Commands out of sync; you can't run this command now for query SHOW FULL COLUMNS FROMwp_optionsmade by shutdown_action_hook, do_action('shutdown'), WP_Hook->do_action, WP_Hook->apply_filters, Automattic\Jetpack\Autoloader\jp6b58e44f39d45cbcc950226f1149a5ce\al5_0_15\Shutdown_Handler->__invoke, Automattic\Jetpack\Autoloader\jp6b58e44f39d45cbcc950226f1149a5ce\al5_0_15\Plugins_Handler->cache_plugins, set_transient, update_optionThis is confusing, because Jetpack is not installed on this site. Does WooCommerce use aspects of Jetpack in it’s own codebase?
Looking forward to your advice, thank you.
Hi @leepaulheron,
Thank you for the update and for sharing the latest Status Report, I can see how carefully you’ve been working through this and I truly appreciate the thoroughness.
Regarding the WooCommerce Analytics plugin, I understand your hesitation about installing something labeled as beta. Just to clarify, this is an official WooCommerce extension. The beta label does not mean it is unstable or experimental in a risky sense, it simply means we are continuously improving and refining it. It is safe to use and is often recommended specifically to help regenerate and repair Action Scheduler tables when corruption is suspected.
That said, stepping back to your conflict test results from yesterday, you identified Shopkeeper Extender as producing a very large number of PHP errors. Since this plugin is required by the premium Shopkeeper theme by GetBowtied, and removing it stabilized logging, this strongly suggests the root issue may be within that extension’s interaction with WooCommerce. In cases like this, the responsibility to maintain compatibility with WooCommerce updates lies with the theme or plugin developer. I would recommend escalating this directly to GetBowtied support with your logs and findings, as they may already be working on an update.
Also, I noticed from your System Status Report that you’re currently running: WP Version: 6.8.3, while 6.9.1 is available. Keeping WordPress core up to date is important, especially when troubleshooting database and scheduled action issues. If possible, I recommend updating WordPress to 6.9.1 after taking a full backup, and then monitoring whether the “Commands out of sync” errors persist.
At this stage, the key areas I would suggest focusing on are:
- Confirm WordPress is updated to 6.9.1
- Continue working with the Shopkeeper developer regarding the extender conflict
- Consider the official Analytics plugin as a safe method to regenerate Action Scheduler tables if corruption remains suspected
Please keep us posted on what you hear back from the theme developers and how things behave after updating WordPress. We’ll continue narrowing this down with you.
Hello,
Thank you for your response.
I can confirm that the [ Shopkeeper Extender ] plugin was removed yesterday, and will not be reinstalled until the author gets back to me with a fix. The current issues all appear to be Action Scheduler related.
I will run a backup and try the WooCommerce Analytics plugin, to see if that helps. Will get back to you later. Thank you.
Hi there!
Thanks for the update!As a next step, we suggest trying this on a staging site first. Keep only WooCommerce and the WooCommerce Analytics plugin active, and see if that resolves the Action Scheduler issues. This will help confirm whether the problem is related to corrupted tables or other plugins on your live site.
Let us know what you find.
You must be logged in to reply to this topic.