How large store can WooCommerce handle?


#1

I’ve got a few questions regarding WooCommerce performance, would be very grateful if anyone experienced in it share some thoughts

  • Have you tested, or seen live examples where WooCommerce works fast with 3000+ products? (including active usage of filters and search)

  • Have you seen any studies comparing WooCommerce to popular e-commerce solutions (like Magento and OpenCart) in terms of performance?

  • Do you have any recommendations regarding caching plugins for it? Should I just use WP Super Cache?


#2

Great question. Providing that your hosting package and databases have enough room, then I don’t see why not!

You should be fine, and for caching I’d also use WP Super Cache.


#3

I guest that I’ll have to do all testing by myself :slight_smile:


#4
Semenov said

I guest that I’ll have to do all testing by myself :slight_smile:

I think you should ask this at Woocommerce forums. They know how much it can handle.



All the best,

Kris


#5

I’m really interested in the answers of your questions.
If you do some test, share it please. :slight_smile:


#6
kriskorn said
Semenov said

I guest that I’ll have to do all testing by myself :slight_smile:

I think you should ask this at Woocommerce forums. They know how much it can handle.



All the best,

Kris

Maybe we can invite Woo staff to jump into this thread?


#7
Semenov said

… Have you tested, or seen live examples where WooCommerce works fast with 3000+ products? (including active usage of filters and search)…

FYI, 150 products in the catalogue is fine here…


#8

I’ve found/asked a few questions:

http://wordpress.org/support/topic/examples-of-websites-with-big-number-of-products-on-woocommerce?replies=3#post-4128514

No real examples however. I’ll probably go with WooCommerce anyway, as admin area is very intuitive comparing to big and fat Magento.


#9

If you’re actually measuring scale in eCommerce, the relevant metric is transactions/second. That is how many orders the DB can intake in a fixed period of 1 second. The number of SKUs is pretty irrelevant because DB reads are way faster than DB writes. And you can put a cache like Varnish in front of static pages to skip DB read all together.

This is where “fat” platforms like Magento will blow WordPress out of the water. WP is not engineered for high-scale write operations. It’s impossible for it to compete with a platform designed specifically for performing under this duress.

That may not be your exact concern, but the same principle applies to any discussion between WordPress add-ons for eCommerce and a single-purpose platform like Magento. Shipping, payments, taxes, inventory, wholesale, CRM, rewards, 3rd party integrations, APIs — everything a store needs out-of-box will be more mature on a native eCommerce platform.


#10
GravityDept said

If you’re actually measuring scale in eCommerce, the relevant metric is transactions/second. That is how many orders the DB can intake in a fixed period of 1 second. The number of SKUs is pretty irrelevant because DB reads are way faster than DB writes. And you can put a cache like Varnish in front of static pages to skip DB read all together.

This is where “fat” platforms like Magento will blow WordPress out of the water. WP is not engineered for high-scale write operations. It’s impossible for it to compete with a platform designed specifically for performing under this duress.

That may not be your exact concern, but the same principle applies to any discussion between WordPress add-ons for eCommerce and a single-purpose platform like Magento. Shipping, payments, taxes, inventory, wholesale, CRM, rewards, 3rd party integrations, APIs — everything a store needs out-of-box will be more mature on a native eCommerce platform.

+1 thanks for the words of wisdom


#11

I have clients with over 100,000 affiliated products in their WooCommerce stores. It’s definitely possible, just not on a crappy host and you have to be careful about which plugins you use as some of them are written very badly.

e.g. If you install HHVM instead of PHP-FPM then you will get significant speed boosts. I wrote about it here.


#12
GravityDept said

If you’re actually measuring scale in eCommerce, the relevant metric is transactions/second. That is how many orders the DB can intake in a fixed period of 1 second. The number of SKUs is pretty irrelevant because DB reads are way faster than DB writes. And you can put a cache like Varnish in front of static pages to skip DB read all together.

This is where “fat” platforms like Magento will blow WordPress out of the water. WP is not engineered for high-scale write operations. It’s impossible for it to compete with a platform designed specifically for performing under this duress.

That may not be your exact concern, but the same principle applies to any discussion between WordPress add-ons for eCommerce and a single-purpose platform like Magento. Shipping, payments, taxes, inventory, wholesale, CRM, rewards, 3rd party integrations, APIs — everything a store needs out-of-box will be more mature on a native eCommerce platform.

Thanks gravitydept, but some well configured WooCommerce stores can handle thousands of transactions/day.

Just wondering, what do you think of Magento vs Demandware, Hybris and other enterprise level ecommerce solutions?

Here’s some comparison reviews by cpcstrategy
http://www.cpcstrategy.com/blog/wp-content/uploads/2014/03/Shoppin-cart-reviews.pdf


#13
However, Magento is fundamentally using an EAV data structure which by necessity requires a lot of caching and indexing with consequently periodic heavy server loads.

In this respect, Magento was in my opinion doomed to failure right from the beginning (at least as a deployed system) as these problems are not trivial to fix for companies without unlimited budgets and there is no instruction manual that helps.



https://www.linkedin.com/groups/Can-anyone-provide-realworld-perspective-3803500.S.89857689

Here’s some comments from LinkedIn, when people compare Magento to truly enterprise ecommerce solutions. Interestingly, Magento is said to be only for small time retailers :slight_smile:


#14
Leokoo said
However, Magento is fundamentally using an EAV data structure which by necessity requires a lot of caching and indexing with consequently periodic heavy server loads.

In this respect, Magento was in my opinion doomed to failure right from the beginning (at least as a deployed system) as these problems are not trivial to fix for companies without unlimited budgets and there is no instruction manual that helps.

No. There simply are things that you cannot do without using the EAV model, it’s just impossible. The alternative to the EAV model is to have dozen columns in your tables and be able to add/remove columns depending on your data, which fails big time if you’re modeling your data in a MVC architecture where you need to write queries depending on your columns, and you do need to do that. So no, EAV isn’t bad, it’s just slow by nature and there’s no replacement in rdbms world.

As for using hhvm/hack, this is questionable if all what you are doing is to use the original php files and not writing your code in hack where the compiler can then optimize your code. You could as well use an opcode cache and get same, if not better, performance improvements.

For the OP, wordpress itself isn’t really the fastest cms out there and it will easily cripple small vps’es. But again, if performance is your concern, throw it on powerful machine(s) and be done with it, hardware is cheap nowadays. Anyway, i personally am against using things on top of things that were not designed to do those things in the first place, if you get what i mean. It’s like using PHP for doing networking stuff, surely it’s possible, slow as hell and restrictive, but possible. On the other hand C is a better tool for this.

Somebody recommended setting up varnish, but last time when i checked(this might have been changed from then), varnish over ssl was a nightmare to setup and when you get it going, you get all sort of nasty surprizes.

Just my 2 cents.


#15

Using HHVM without changing any PHP code is not questionable - I’ve measured it and with woocommerce I get an 18 fold speed increase on many pages when there are 100,000 products in the store.

Others with more testing resources than me have tested it on more systems and typically see a 6 fold speed increase. (e.g. WPEngine)


#16

I meant measurable against an opcode cache not plain php of course. Don’t jump ship that easy, you’re not facebook to have issues with php itself, but rather with the database usage, and hhvm can’t help you there.


#17
twisted1919 said

I meant measurable against an opcode cache not plain php of course. Don’t jump ship that easy, you’re not facebook to have issues with php itself, but rather with the database usage, and hhvm can’t help you there.

Except I have to solve performance problems for my clients and the problems with woocommerce performance are NOT in the database when you’re running a large store, they are in PHP. The code in question is some pretty crappy core Wordpress and core WooCommerce code which iterates through every product in your database in order to perform category counts. The mysql code for this with 130,000 products runs on an 8-core VPS in 200ms but then the iteration through all these products in PHP takes 180+ seconds.

When I switched to using HHVM, this same code takes a few seconds to complete because it’s now running compiled code.

You’re going to start seeing a LOT of hosts switching to Nginx + HHVM to solve wordpress performance because it really works, really well.

It would be great if the underlying code were fixed too - this is something I’m also working on to try and figure out how to change the core code without affecting functionality.


#18
davehilditch said

Except I have to solve performance problems for my clients and the problems with woocommerce performance are NOT in the database when you’re running a large store, they are in PHP. The code in question is some pretty crappy core Wordpress and core WooCommerce code which iterates through every product in your database in order to perform category counts. The mysql code for this with 130,000 products runs on an 8-core VPS in 200ms but then the iteration through all these products in PHP takes 180+ seconds.

I see... I don't use wp/woo at all for the reasons i listed above, but from what you're saying, it's pretty bad.

Thanks for sharing though, helps others avoid this pitfall :wink:


#19
davehilditch said
twisted1919 said

I meant measurable against an opcode cache not plain php of course. Don’t jump ship that easy, you’re not facebook to have issues with php itself, but rather with the database usage, and hhvm can’t help you there.

Except I have to solve performance problems for my clients and the problems with woocommerce performance are NOT in the database when you’re running a large store, they are in PHP. The code in question is some pretty crappy core Wordpress and core WooCommerce code which iterates through every product in your database in order to perform category counts. The mysql code for this with 130,000 products runs on an 8-core VPS in 200ms but then the iteration through all these products in PHP takes 180+ seconds.

When I switched to using HHVM, this same code takes a few seconds to complete because it’s now running compiled code.

You’re going to start seeing a LOT of hosts switching to Nginx + HHVM to solve wordpress performance because it really works, really well.

It would be great if the underlying code were fixed too - this is something I’m also working on to try and figure out how to change the core code without affecting functionality.

Isn’t there anyway for wordpress + woocommerce with 130k of products be faster with some database tuning? :slight_smile:

And which portions of the core is causing a performance problem? :slight_smile: I’m sure Wordpress contributors like Mark Jaquith and the rest would be keen to fix those


#20

Yes - I mean from my own performance analysis, it boils down to two separate parts of the page - both of which are related to counting products (or posts) per category and displaying category lists. This is something that could be done inside mysql instead of inside the PHP code - as it stands, all product IDs plus a couple of other columns are returned to PHP and the work is done there instead which is really stupid.

Currently - the mysql code runs fast - 0.3 seconds - it’s the fact that ALL rows are returned and then parsed in PHP that causes the problem. I’m sure I’ll figure out a fix for it soon enough but if you want to put me in touch with Mark Jaquith I’d definitely appreciate it - as would a lot of people trying to use Woocommerce for large affiliate stores.