Skip Navigation

[Resolved] Woocommerce products Views loads terribly slow

The Toolset Community Forum is closed, for technical support questions, please head on to our Toolset Professional Support (for paid clients), with any pre-sale or admin question please contact us here.
This is the community support forum for Types plugin, which is part of Toolset. Toolset is a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients and people who registered for Types community support can post in it.

Tagged: 

This topic contains 15 replies, has 3 voices.

Last updated by Daniel 5 years, 10 months ago.

Assigned support staff: Ross Fisher.

Author
Posts
#364280

Hi

I've created a View in order to list woocommerce products (about 4000 products) in a custom table with custom filters. Whenever I try to load the page, which only displays 10 products per page, the page load times goes up to 10 seconds.

The thing is that previously I have used Views to customize the woocommerce loop and it loads pretty fast.

Here are the two versions:
4000 products using a View inserted in a page: hidden link
4000 products using the same View to customize the woocommerce loop: hidden link

How can be possible to have such a huge difference in load times? I need to deliver the website to the client and I have to solve this problem.

Any suggestions?
Thanks!
Daniel

#364395

Thank you for contacting Toolset support, I'd be delighted to assist!

If you don't mind I'd like to perform some benchmarking and performance troubleshooting on the site to find where the expensive MySQL queries are.

Could you please share:
1. Your hosting provider
2. The hosting plan you are on (such as the link to the plan to get an idea of allowed server resources)
3. If your hosts would allow you to upgrade to PHP 5.6 or if you can select it in the backend
4. Temporary Admin credentials for both FTP and WordPress (next reply will be private)

#364753

Hello!

Your site is currently not loading:
Notice: Trying to get property of non-object in /home/klark/public_html/cuymar/wp-content/plugins/polylang/include/translated-object.php on line 218

Please check you are running at least version 5.5 of PHP and let me know once I can login!

#364769

Hi!

You can check php info here: hidden link

The website is loading now.

#364776

Still no luck at the provided wp-admin login URL provided:
Notice: Trying to get property of non-object in /home/klark/public_html/cuymar/wp-content/plugins/polylang/include/translated-object.php on line 218

Could you disable WPML temporarily so that I could login to assess the performance?

#364777

Sorry Ross, I forgot I have disabled wp-login

Try login here: hidden link

#364810

Thank you, I finally got in!

Here's some recommended tuning parameters as it seems you have full SSH access:
(Basic)
Install PHP 5.6
Enable OpCache with 128MB memory (helps a lot with PHP interpretation)

As you have dedicated server access:
(advanced)
Install the PECL Redis Extension and Redis-Server
Set Redis to eviction policy allkeys-lru and max memory at least 512MB 1028MB preferred
Restart Redis Server for config file changes to take effect
Install the Redis Caching plugin from the WordPress Repo and enable, be sure it reads status connected
Test performance again, with this config your server should be 2x-3x faster with WooCommerce and WPML!

You can test using the P3 Profiler plugin before and after each Basic and Advanced tweak to assess performance, it's installed and under Tools menu now.

I'm reporting 2.3 seconds benchmark with 91 MySQL Queries on your server.

#364822
products-mine.png
products-theirs.png

Attached is images of your setup - PHP 5.5 with no OpCache and mine, PHP 5.6 with OpCache.

3 seconds difference in load time, this is without PHP Redis enabled, expect even better performance with it.

This is with manual selected in P3 at URL hidden link

#364828
Screen Shot 2016-02-04 at 4.14.47 PM.png
Screen Shot 2016-02-04 at 2.42.06 PM.png

Here are results with no Redis caching and with Redis caching - P3 "Automatic"

#364832
products-theirs.png
products-mine-redis.png

One last screenshot:
hidden link

PHP 5.6 - OpCache with Redis Cache

This is also on a OVH server, what processor are you running? I have a E5-1630v3

#365086

Hi Ross

I appreciate your help with my site.
The fact is that I don't have access to the hosting configuration as I'm only hosted there. Besides, I'm just a web designer, nor a developer or programmer so I'm not sure I can perform the changes you suggested.
I could get in touch with the person that operates the server, but I'm not sure I can have it set up the way you recommend me.
My main concern is how is it possible to have such a big difference in loading times between the default woocommerce page using a view and a custom woocommerce page using the same view?
If views is causing that huge slowdown maybe I should quit using it for this particular project.

Before using Polylang I tried WPML to translate the website, but it forced me to duplicate all 4000 products to display them in spanish/english. This is something I really need to avoid so with the help of a developer I tried to modify the woocommerce page to force it to display products in the secondary language even if they weren't translated but it caused a lot of problems when filtering the products by custom taxonomies or searching them because the page went back to the main languaje.

So I created 2 views to have the products listed in spanish or english without duplicating them and finally I got it working like I needed but then the slowdown problem shows up.

Would I get faster loading times if I have the 2 views for the products (spanish/english) hand coded in php instead of using views to display them?

Isn't really anything apart from the changes in the server that can be done to get best preformance?

Thanks again for your help.
Daniel

#365089

Thank you for the detailed reply!

Without knowing exactly how your custom translation works, my thoughts that are regardless of how - many Products, pages, posts with WordPress in general can have a large impact on performance. It's funny how WordPress works, the wp_posts table is a singular table which contains all posts, including WooCommerce products. When you start to do things like add many entries to the wp_posts table or start to run methods which invoke thrashing of the Database API, things can easily slow to a crawl. Did you know that Pinterest first tried launching on WordPress then went with Django due to this reason?

The simplest solution would be to find a hosting provider which could offer such a setup. I've been running some benchmarks in my free time to help formulate the best configuration to recommend to our customers and found a few that may be able to do this. As I'd hate for you to continue spending time on development when an easy solution is in sight, I could email you some of my findings on hosts, just ask!

As far as Toolset goes, we have recently adding performance tweaks as we can. A recent one was to use a in memory keyvalue store using the WP_Cache stock functionality which helped quite a bit but no easy fix will solve all performance issues.

#365913

Please try the Views 1.12 under beta state yet, it should fix that problem.

#365941

Hi

Thanks both Ross and Adriano.
I was able to devise a solution for my problem but I had to use the standard woocomerce products page to display the 4000 products without suffering slowdowns.

My concern now is, if I create a custom post type for whatever I need, if I begin creating content and go up to thousands of posts like in this case with 4000 products.

Will I have the same slowdown problems I had here if I use a view to display them, even if it only displays a few items per page?

What is the maximun or recommended number of items/posts Views can manage without suffering those huge slowdowns? I know it depends of the server, but mine isn't bad at all I think.
And finally, would the next stable version of Views be faster managing large numbres of items?

Thanks
Daniel

#365962

Howdy Daniel!

I'm sure Adriano can chime in here with the recommend posts, it does hugely depend on the hosting setup though so your results may vary.

It's no secret that WordPress itself has issues with large data sets, all posts and metadata are crammed into the same table which in the DBA world isn't the best for performance. Ideally a custom backend developer would split differing data into separate DB tables and index accordingly but what do you do? It's WordPress and not everyone can afford or has time to create a custom solution in Django or MeteorJS 🙂 You got to have that balance of ease of use vs specialization somewhere right?

As for Toolset, we have been working hard in increasing performance as we are aware of these issues. For example in the last year, we added numerous caching methods to Toolset to prevent thrashing of the database. It's a constant area of improvement for us and it should only get better as time goes on.

I know this isn't a direct answer, "You can have X posts before a slowdown" but I do hope it helps provide some guidance as to WP performance and the higher level thinking. With most sites, I usually see slowdowns at 2k+ posts in a CPT or period, keeping in mind regardless of where posts are in WP (CPT, Products, whatever) it's all in the same wp_posts and wp_metadata tables and the WordPress ORM (object relational mapper) is being asked to do a lot of work, well and only WordPress has access to how the ORM works.

Not that I know of any, but if a hosting provider were to appear with the above config (redis, OpCaching, etc) to guarantee good performance, would it be worth switching to them for you? There was some talk about Toolset hosting partners in the past and if I can show a need for "custom" hosting plans for WPML, Toolset - maybe I can give the idea to the company to find a hosting provider which would offer the above configs. No promises, just ramblings fro a T1 supporter 🙂

The forum ‘Types Community Support’ is closed to new topics and replies.