Load In The Loop: Episode 15 – Liberty Mountain

Jordan Griffey

May 29, 2020
Load In The Loop: Episode 15 – Liberty Mountain

Load In the Loop: Episode 15 is here! Join Eric Hileman and Ivan Chepurnyi as they identify and fix some performance issues for Liberty Mountain, a wholesale distributor of technical outdoor products and climbing gear. What will they find? Can they fix it? 

Watch now to find out!

Sponsored by blackfire: https://blackfire.io/

Follow us on Twitter! https://twitter.com/loadintheloop

Ivan: ivan.chepurnyi@ecomdev.org, @IvanChepurnyi
Eric: litl@magemojo.com, @ericvhileman

Table of Contents:

00:13:30 remove advanced search

00:16:30 commerce edition category events, disable if not using

00:17:30 db query per product litl / permissions, if using catalog staging or not, disable if not needed (requires database structure changes, scripts available)

00:25:30 amasty pay restriction get version 00:28:30 catalog permissions need optimized, disable if not using

00:33:30 integer.net downgrade script can be used to disable unused modules 00:34:30 amasty minifier, remove and use baler

00:37:30 use smile elasticsuite (instead of shopby)

00:47:30 shopby is fine for small merchant, but larger catalogs need elasticsuite

00:56:30 shopby brand 2s on product page (replace by custom functionality)

01:03:30 wyomind version check

01:06:30 amasty more from brand (order by rand)

01:08:30 MSI performance patches needed

01:13:30 Composer autoload needs in build pipeline

Github Repository

https://github.com/opengento/magento2-downgrade-ee-ce/blob/master/scripts/product.sql


Transcript

Ivan Chepurnyi: [00:00:00] Hey, Eric, how are you doing?

Eric Hileman: [00:00:02] I’m doing good.

Ivan Chepurnyi: [00:00:04] Yeah. Well,  we had the no show for a long time. So, as you see, there is a little bit of changes on my side, I decided to change the location in my room. I see you changed your location as well. Now you are in greenfields. All right.

Eric Hileman: [00:00:18] For now, I, yeah, Jordan will put a background in behind me so what the viewers see when this is live….

I don’t know. That’s up to, it’s just up to our producer. Maybe I’ll be on the beach somewhere.

Ivan Chepurnyi: [00:00:33] You know, like you can wish for a lot of things, but you don’t know what’s going to be in your background. So…

Eric Hileman: [00:00:41] Probably a bookshelf, bookshelf seems to be the go to.

Ivan Chepurnyi: [00:00:48] Or maybe a studio or something like that. So.

Could be as well. So, yeah, a lot of things I think has happened, since our last episode, right?

Eric Hileman: [00:01:02] Yeah.

Ivan Chepurnyi: [00:01:03] So, we are now recording, not during the working day, so I feel it’s a little bit more relaxed because usually, for me, it’s very late night. And, for you, it’s, somewhere around lunch, within your calls, during the working day.

Eric Hileman: [00:01:17] Yeah, no, it’s early morning for me.

Ivan Chepurnyi: [00:01:22] Yeah. how do you feel about early mornings?

Eric Hileman: [00:01:26] Not a fan. Not a fan. No, that’s all right. I mean, I’m usually up at seven. I, I, I’ll go run and then come back. So, this is my off day, so it’s okay. No, that’s cool. It’s different, but we’ll get used to it and it’ll be a good show.

Ivan Chepurnyi: [00:01:43] Yeah. I hope so as well. So, and our viewers will like it as well. we are changing and we are evolving. Right. So maybe, maybe we should start inviting some guests as well. And, talk with a merchant from the perspective of the merchant, you know, how they feel about performance from perceived sales and so on.

So it would be interesting to speak about it as well.

Eric Hileman: [00:02:07] Yeah, that’s a, that might be a whole other show we’ve had people ask to come on and be interested. Even, people who do like front end performance and optimizations have asked about that. I’m not sure. Maybe the viewers will let us know if that’s something they’re interested in.

Ivan Chepurnyi: [00:02:24] Yeah, definitely. Viewers, just let us know in the comments below this video, so we will know, what to do with, the show format because, yeah, we like to review, customer websites, but I think  it’s, it’sbecoming more and more like one, almost the same like the other because almost all of them have issues with Magento core performance and we have to take a look at all the time.

Eric Hileman: [00:02:48] You know, as something that we are doing at MageMojo is we’re, we’re doing what’s, we don’t have a name for it yet, but it’s kind of like a, an optimization score or a efficiency score is what we’re calling it internally. So we collect the amount of sessions that a customer gets, and then we we can track all the CPU down to the, down to the second that they use across all their services.

So what we’re doing is we’re creating this efficiency score, and we’re saying, okay, some of you know, here’s the, here’s the median, and then here’s standard deviations out. And then from that, we’re actually collecting the extensions that are installed. So we’re. Now looking to see like, okay, is there a common pattern between extensions and underperforming and inefficient stores?

So we’re probably gonna put an article about that and I’ll have some more information about that, on the next, on the next episode.

Ivan Chepurnyi: [00:03:44] So, yeah. the funny thing is today I just received an email from MageMojo automated system. Telling me that, my, test node on which I was doing some load testing, doesn’t have all the caches enabled.

Eric Hileman: [00:03:57] Yeah. It’s actually in production. So it’s considered to be in production and we do monitor that. So we’re like, okay, you’re in production, you need your caches on and get your sessions out of files. basic things like maybe your crons are overrunning or your database queries are locking. And…

Ivan Chepurnyi: [00:04:12] But is it like a new feature that you released?

Because I’ve never seen this kind of email before.

Eric Hileman: [00:04:18] We change the way we interpret whether caches are on or off. So that’s probably what it is. I think in some instances we weren’t able to detect it. and now we’ve, we’ve overhauled it so we’ve have a more accurate detection rate. It’s, yeah, it’s actually, it wasn’t as simple as what we thought it was.

It never is. There’s always some weird edge case that we can’t detect, but I think we’re getting them all now. That’s probably why you got that.

Ivan Chepurnyi: [00:04:44] Yeah. because, I was a little bit surprised yet..  definitely because, on that instance I was using it for testing the cache flush  functionality and I intentionally disabled the full page cache and probably for disabled, full page cache. It gives me notifications that, I’m in violation of terms of service, because I don’t have all the caches enabled. Does that kind of make sense? Yeah, it’s, it’s, it wasn’t new message and it was interesting to see it.

Eric Hileman: [00:05:16] We send, we send a lot of automated messages out, like if we detect queries being locked, that happens a lot.

We’ll, we’ll. Try to kill queries or even restart my SQL when it locks up. A lot of that happens in customers just don’t even know it like that. It’s happening and they’re not seeing it unless an end customer reports it. Otherwise the host will never know that it’s happening unless they’re monitoring it like we are.

so we have a lot of protections like that to keep stores healthy and alert store owners of what’s, what’s going on at the system level.

Ivan Chepurnyi: [00:05:47] And do you also plan to introduce something like, for instance, if it was a source connected to new Relic, right? You can track very slow transactions. I see that there is a lot of time some customers have like 30 seconds plus page time generations on some pages.

Eric Hileman: [00:06:06] No, no, because we don’t, we don’t want to integrate with third party services like that. We don’t want to, like if you have new Relic and that’s happening, that’s cool. You should have new Relic. That’s great, but that’s up to you to set an alert out a new Relic for it.

Ivan Chepurnyi: [00:06:19] But I mean like in PHP FPM you probably can parse the log… access log of PHP FPM queries. And, create, some kind of alert for a lot of queries that take, let’s say, let’s say the page iteration times that take, let’s say longer than 10 seconds.

Eric Hileman: [00:06:40] We will, so, so we’ll send you, we’ll be like, okay, these queries were taking over X time and we’ve, we’ve killed them and now it’s okay.

Or if, if, if we, if we can’t kill them, if the database is locked, we’ll restart it. And then we actually, we send you the queries, so we’ll include in the email the actual queries that we’re running. Do we correlate that back to PHP FPM though? Now if you open up a support ticket and you want us to dig more into it?

Yeah. We are very much an extension of your dev ops and we will go take the time and dig in the time code from when it happened and pull the FPM logs, which you can pull yourself as well. You can, those are accessible  even through the UI. you can get those and then you can look at that certain time and see what pages it was.

Usually though, if you’re capable enough to do that. You’re capable enough to look at the query and you can see the columns and the tables that are in use, and that’s a pretty strong correlation of what part of the store is doing it.

Ivan Chepurnyi: [00:07:33] Yeah, it’s sometimes crazy, how some people try to query from Magento will say WordPress database, and they’re doing it in a very terrible way.

But then, but in general, like it wouldn’t be a very interesting feature for you just to create a similar notifications for slow FPM queries. Because not a lot of people know that. Let’s say a generational of the category, page takes a long time for them. And if, if let’s say you could somehow integrate, was information that you probably,

Eric Hileman: [00:08:06] We can, but the problem is, the problem is everybody has those, like everybody does. Like 99% of customers have pages that take a long time. So what would happen if we did that was we would have to put in a custom parameter to say like, okay, how, how, how long is too long, and what page does that apply to?

And then it starts to get really granular where like, we couldn’t. To tune it so that it wasn’t so noisy. It would be really, really difficult. Maybe if you were going into a system where you were tracking it and then you were looking for like standard deviations, which is what a lot of people call fancy machine learning and AI, and you’re just saying like, okay, it’s been like.

This for the last 15 minutes. But this for up to now, it’s been this and for the last 15 minutes, it’s now two X what it was. And you alert on that. You got to get more, you get to get more looking for outliers, I guess, cause just alerting on specific things as to,

Ivan Chepurnyi: [00:09:05] Because for one of the hosters here in the Netherlands, I was, using, forone of the customers they service for a long time and they show me, actually, I think it’s in MageReport. Yeah. It’s MageReport. And when you, let’s say, take a look at the, your, stuff. Yeah. Can I sign in with byte? Probably. okay, Jordan, don’t record this page now. Now you can, take a look at it. So here you can, for instance, see, average PHP response time.

And then you see the average response time around to all of the pages.

Eric Hileman: [00:09:46] Yeah, but that’s all the pages. Like again, you can get that out of new Relic, like a learning on a specific,

Ivan Chepurnyi: [00:09:52] Yeah but the average hyper node. This is this specific customer. So I’ve already tried burnout. It’s medium across all of your customers, and here is something.

Eric Hileman: [00:10:04] Yeah, so that’s what we’re talking about doing with the efficiency score as well, is to show you like, okay, here’s, here’s the average, here’s what’s efficient. for other customers and your version. I, I don’t think we’ll do really granular versions, although that’s another issue because like, there’s 2.3 where MSI just threw performance off a cliff.

so it’s, yeah, like who are you, who you average two on byte? Like, are you going against M 1 stores? Are you like M two versus m1 or is it segmented and m1 and m2s . And then is it also segmented in between…

Ivan Chepurnyi: [00:10:38] With this specific customer it’s M1, so it’s a average against M one.

Eric Hileman: [00:10:43] And are you only M1 stores?

So it’s you’re, you’re, you sure average is all m1 stores that they’re showing?

Ivan Chepurnyi: [00:10:51] Because I’m sure that for Magento 2, it would be much worse.

Eric Hileman: [00:10:58] They don’t just host Magento. They’re hosting other stuff too. So, you know, are you going against WordPress? Are you going against the static site? Like who, who is in there creating that average? Is one of the questions that we have around, releasing something like that.

Ivan Chepurnyi: [00:11:13] Yeah. I think it was the best way just to have a major, version. So if you have Magento 2 major version or Magento on Magento 2, or, any other one. Okay. So, let’s, start with our current customer and let’s record an intro probably.

Eric Hileman: [00:11:30] Yeah. So Load in the Loop. Sponsored by blackfire.io I’m Eric Hileman CEO and cofounder of MageMojo magento hosting out of New York city. The purpose of this program is to take some of what we’ve learned in the last 10 years of Magento specific hosting and evaluate one of our customer’s stores. We’ll share with you what we find in hopes that it may help improve your Magento skills and the performance of your own Magento stores.

Along with me on this trip is my cohost Ivan.

Ivan Chepurnyi: [00:11:53] Hey, my name is Ivan. I’m a Magento consultant out of the Netherlands. I help merchants with performance and proper Magento 2 set up from the beginning of the project. Right now we’re gonna review one of MageMojo’s customers. We’re still waiting for customers from, not only from MageMojo to come on the show, but we have a lot of requests from MageMojo customers to get on the show. So, we have them as a priority. And, today, we’re going to take a look at Liberty mountain, right? Tell us a little bit about this customer.

Eric Hileman: [00:12:26] Yeah, so Liberty mountain, they were, they’re looking to launch a new M2 store and they’re having some performance issues with it.

It looks like they’re, emergency. We have some example categories here, like emergency essentials and,  camp hike, so it looks like, yeah, categories. And then also product pages, the PDPs. So they’re a little bit, they want to go live, but they’re, they’re a little bit worried about the performance. So they’re hoping that we can spot some offenders in here for some wins so they can go

Ivan Chepurnyi: [00:13:01] just right away for them.

Remove advanced search because of the one searches doesn’t give you any, any benefit. It’s better just to use quick search and then just narrow down the search results because, so the on searches, the performance issue, and since Magento one, so in Magento one advanced search was a problem because it was using like queries instead of using a full pach search.

So that’s a little bit. Complicated functionality. Okay. So in general, let’s start with our standard profile of the homepage, right? I’m going to go right away with disabling the aggregation. Okay. Let’s see. In the meanwhile, what they have on the homepage. So they have couple of static blocks. They also have new products.

This one I think we will see. Quite a lot of issues with, maybe, because I see as they have starting ads, it means that some of them have probably tier prices. Okay. And here’s our results for a homepage. we see that it’s 200 database queries, and these 200 database queries are sign of some issues with the database operations over here.

And let’s see what’s going on there.

Okay.

Okay, so is this, this Magento commerce as they are using Magento commerce? And, this is something. I think that I know as a common bug in Magento commerce with, category events, because they don’t load events.

Where category a they don’t load events for the list of categories, but they loaded one by one, and the same applies for category permissions as well? So you see that those two observers adda lot of time, and probably if we take a look at the queries itself,

and what is. This one. It’s something new in Blackfire. This looks where we are.

It seems like a bug in UI, I guess. You see. Dot, dot, dot, dot, dot. Is not replaced with a dot. So it will be weird, but okay. Here. Permissions and definitely for product a hundred percent. There is 22 database queries for each product that is visible on a category page or product page or any other page. A, is there a common problem with Magento commerce where they execute a database query for each product. So just standard load in the loop.

that adds quite a lot of, additional, load in the database. What do we see here as well?

And bunch of standard stuff, but I think is the biggest one is catalog  permissions, and also this query a little bit slow because it’s using, yeah. The data through three.

Yeah, it’s, it’s hard to grasp of what’s going on here. Okay. So thanks

some text data sources to retrieve some worker and product and. Something else. Okay, so this is a standard Dunion query to retrieve the data for. all the products in the collection. Okay. So this is probably more or less okay. But because of the staging functionality of the catalog is actually very important to check with this customer because, he was, this customer is really using Magento catalog staging or not.

it’s. Usually a little bit of performance overhead on your front end because Magento has to build a lot of weird queries with joining some additional tables, and sometimes my skill optimizer is unable to properly performed those queries in the best way because there is too much staff gets to join because the staging is built in such a way as that.

It’s just modifies other queries on the fly. So it’s not every single query that is using the workstation, is well-crafted. It means just that it’s automatically applied to every single operation when we’ll say you want to date or schedule some changes, for catalog. That looks staging, we’ll add some additional queries in order to select multiple.

there’s a proper well use for specific, version itself. So would be great for this customer to evaluate. Do they actually need catalog station because. You can still use Magento commerce without the catalog staging so you can disable it. and they have couple of customers who are successfully running with SCADA workstation, disabled ends.

They have much more better performance, on the front end. And they have, less issues with, they looks in admin panel as well. So as this is kind of one of the performance hooks for Magento, however, it requires, changing your data way structure because, that look staging changes in one way it changes, is that the way we structure it adds additional columns to product table and, entity tables of the product itself.

there’s Eros, some scripts available from our community where you can actually. A downgrade to your database to before staging. So you can, safely revert as the changes, but you need to make sure that a staging module and Seth was using, those tables is getting disabled as well. Otherwise, it reapplies it changes on the next, set up upgrade.

Okay. here.

Yeah. 20 milliseconds is quite heavy query. And I think mostly it’s because of a added staging table. So as you see here, we have,  entity created thing, updated thing. So this stadium functionality really slows as a query down. I don’t think that you will find it, in standard Magento stores that it will take, does this amount of milliseconds to just retrieve category?

I think even just category main entry. So this is usually a very fast query in my skill, but in this case, it looks like. Because of, Is this created in, there is some additional issues because this updated in and created thing is they’re not part of, the past index. And I think there is definitely some tables sort happening because I don’t think that they have a lot of categories.

Right. So how for any area, how many categories sexual is they have

no, I don’t know

about even, let’s say it’s a health 10,000 categories. like running equator, like that wouldn’t take, this amount of milliseconds. So it’s already a signs that, yeah, staging definitely heats Zim heart on performance of the Aquarius itself.

Oh, okay. So.

What do we have here as well?

Eric Hileman: [00:21:46] it looks like quite a few cat categories.

Ivan Chepurnyi: [00:21:49] Yeah, so mostly I see here, for instance, they don’t have any load in the loops and custom code, but they have loaded in open Magento commerce. So here you see, is that. I’ve collection data. This observer takes a lot because there is, the get they agree, permissions and could they go to events, modules that they’re adding a lot of, overhead.

However. Let’s just take a look at sounds. The categories, maybe they even don’t use category permissions, like could they get a permission? This is when you can restrict for specific customer groups. You can restrict an access to category through product. Right, and I don’t things that a majority of the merchants uses feature, but when you get a Magento commerce license, all the features are enabled by default.

So that’s why it’s very important when you start a Magento two project that you decide which features actually you’re going to use. Otherwise, they will actually just slow you down. Like if you’re using category permissions, it’s fine. You know, like you are taking, that, additional functionality as a cost, you know, like for your performance.

But if you don’t use it. You’re just wasting your CPU cycles on a server, right? You better just disable it. And, here I, I don’t see any sign of category. gotta look events here. So usually like you will see a banner or something, like that where you have a, you know, flash sale, like, this offer expires in a Zeus amount of time and you have a countdown with the time.

So this is a catalog event. And catalog permissions is usually when you have. Per customer group, right? Some, some products are not shown or some categories are nutshell. But yeah, it’s whether, of course to check was the customer itself, but it makes sense to take a look. Maybe they can just safely, disables those modules, fruit composer, because those are just adding additional time.

and Zig generation time will. Reduced dramatically.

Eric Hileman: [00:24:00] And that’s all the catalog staging mod module that you’re talking about.

Ivan Chepurnyi: [00:24:04] And catalog station as well. Yeah. Okay. So here is, our good old friend CMST. but he restriction extension. this is actually related. I don’t know why it’s happening here because, okay.

Yeah. The same thing again. you remember it as a composer version, the retrieval of Magento, this is kind of a performance issue in. In this PayPal before is messed with available for no payment before his massive available and master by restriction. So they. Edit a plugin and this plugin, I’ll never recall.

Does it mess up in walks? This product might get version probably. I don’t know for what they’re using. This version I was there. It just doesn’t make any sense because the functionality doesn’t depend on Magento version or the extension. If you have a specific question or restrictions for version of the product, you have to mitigate it for the composer dependence is not through a run time checks because, Zip broke Medallia. The good version has no relation to the set was a module. So enabled after the set of functionality is available to your Magento store. It’s just information about the general wheel or package that Magento Ruiz is for marketing, not for system, dependencies.

Eric Hileman: [00:25:35] We see that one a lot.

Ivan Chepurnyi: [00:25:37] Yeah. So this is kind of standard Kwanzaa we see on our show. Right. And hear some kind of,

yeah. Cut local events.

applied product permission, some collection after load observer. So this one takes some time and. This one as well. So I think if they were to use  and they would use permissions, we will see much more longer the way query at times. Then some things that we see here, for one simple reason, because when it’s empty, my scale just returns you back.

it knows that table is empty. And if you take the data, I would say from the table, where is it? gotta look, permissions, let’s say. Yeah, let’s look for it.

Oh yeah, it’s so here, if my SQL sees, for instance, that this table is empty, it might just return you back, quite quickly with no results. However, is there a slide? 22 queries. So this is a total time of the query execution for this 22 queries. So it’s quite fast forward 22 queries to execute it within five point.

Eight milliseconds, right? So it means that each query to go, and not a lot of time, but here on afterload, those querys gets executed. So as soon as they have data in those tables, the performance will get worse. So. If you use a kettle of permissions, usually you need to optimize a lot of places.

Whereas those queries are happening because this is quite complex logic and sometimes they just advise customer to use something more simplistic and based on the actual business rules they have for Zen. Relying. on the extensions of this provided for Magento commerce is that adds a lot of data into the database and might multiply and, worsens the performance of your database queries.

Eric Hileman: [00:27:58] So that’s the catalog permissions. Is there, is there community scripts you can use to optimize that or something you have to do custom or can you just,

Ivan Chepurnyi: [00:28:06] so if you’re not using, You, you can disable it. So if you’re not using just disabled,

Eric Hileman: [00:28:13] is there anything extra required with database tables, like for the, for the staging?

Ivan Chepurnyi: [00:28:19] I think, no, because like, it’s very independent module. Are you sure you just, do composer, replaced as there is some, masters the community are using. Ones are not going to use sound with the Magento core modules and you guys can create a New York project, a composer, Jason. You can create an a section, replace it.

You can specify as a composer package name for that module. with an empty, where there was a star, and it will automatically assumes that this model already exists in your project and it doesn’t need to install it from Magento repository. So it’s in such a way you actually fell, Hey, I already have this module.

I don’t need it to get installed. So this is kind of a cocky way to disable a module, but it works through composer, so everyone using it, and usually you should do it from the start of the project. So

Eric Hileman: [00:29:13] yeah. Does that mean they would have to rebuild this to do that?

Ivan Chepurnyi: [00:29:18] for catalog permissions and catalog events.

Now, because this is, those modules are acquired, yeah, they don’t have side effects for other functionalities if you disable them. But the catalog, staging ease. So let’s say, you can use staging for other entities, let’s say like CMS pages and other stuff. But for catalog, usually customers don’t use it because.

People will use CRPS and beams in order to supply the product information. They don’t, change the product to prices or, product descriptions based on the schedules of the internal Magento functionality. So this is something more for customers that doesn’t use any integrations with being sorry or piece.

And I don’t know if this customer is using staging or it just was a standard install of Magento commerce.

Eric Hileman: [00:30:17] Yeah, I’m not sure either. Likely a standard install.

Ivan Chepurnyi: [00:30:22] Yeah. So if it’s a standard install, it makes sense to invest some time with the developers because I think as there is already a script available, whereas the community, I think is the guys from integer net, they created a  file in which a Zurich a downgrade to community edition from enterprise edition.

Of Magento too.

Eric Hileman: [00:30:46] Oh boy.

Ivan Chepurnyi: [00:30:48] So, so you, you, you can, and you can use this as script to partially, disable the sound was the tables. So we can just take, you, you, for instance, can check which tables are used in staging for catalog. And you can take, the queries that modifies those tables from that script and just applies them.

You don’t need to downgrade

Eric Hileman: [00:31:12] to

Ivan Chepurnyi: [00:31:15] the community. is there still a lot of good functionalities in Magento commerce that you want to use? I’m just you that, that awesome you want to disable because sells and doesn’t make sense to use if you don’t use them or doesn’t make sense to leave them enabled if you don’t use them because they introduce performance penalties.

Eric Hileman: [00:31:35] Yeah, that makes good sense.

Ivan Chepurnyi: [00:31:39] Yeah. Actually, my general, rule was the customers. I always disable staging. So, and we usually discuss on case by case basis if a customer really need to use, is that functionality or maybe is there something simple and easier for them to be used, let’s say for catalog, because catalog staging is just a nightmare for performance.

Okay. So here in the profile, and we’re just still on the homepage, right?

Eric Hileman: [00:32:10] Yeah, we are. Wow.

Ivan Chepurnyi: [00:32:13] Yeah. So here we have, a master page speed optimizer. I think we’ve already discussed about this extensions that it’s using, meaning fire, and as this meaning fire is introducing a lot of CPU time, there’s a page rendering.

So it makes sense to, actually removes this extension completely and use, Baylor, Baylor. Yeah. I think this is the right one. Could have Magento.

Eric Hileman: [00:32:50] Yeah. This the one Andrew did.

Ivan Chepurnyi: [00:32:53] Yeah. Yeah. So this is the one, I’m going to right away, put it in to our chat so you can put it into the show notes.

Eric Hileman: [00:33:02] Yeah.

We’ve seen really good results from that and we do support that.

Ivan Chepurnyi: [00:33:06] Yeah. So Baylor is the way to go for a frontend optimization to not use as this base speed optimizers extensions, because. A Zara not applied to during the deployment process. They’re applied during the runtime and they slow down Zaza parts of the page.

Like you might think like, yeah, it improves my front end performance, but it makes your performance much more worse. And in case if you are using, let’s say horizontal scaling, Zola’s extensions are usually writing through the file systems that are network mounted. A shares, and this is where it’s slow.

And then all the benefits of horizontal scaling are neglected by this small, extensions. Is it doing right operations in every single

Eric Hileman: [00:33:58] cage? So one of the reasons why we’ve invested so much into the file system, how we handle it, we have includes, excludes in our audit scaling and put a ton of optimizations into the network part of it, because it’s just, there’s so much on a network file system.

We’ve done as much as we can, but you definitely need to keep as much off of it. It’s the customer can or they’re going to have a bad time.

Ivan Chepurnyi: [00:34:21] Yeah. It’s sometimes. Quite crazy. How extensions right to the file system on a recall. So let’s take look at the problematic category page, right? So they were complaining about the emergency essentials and.

I think I already know why, because we see a lot of filters and I already guessing what kind of suggestion we can give to them. There are no

Eric Hileman: [00:34:49] limit where, yeah, let me guess. A use smile Alaska’s.

Ivan Chepurnyi: [00:34:58] Yeah, so it just, I think a common thing to do. I think they’re using some kind of a master extension here. Because this is doesn’t to core functionality because they’re a bunch of different type of filters and there is also multi select ones. So yeah, definitely. We see here, there are 16 seconds to generate this page or this is too much.

for sure. So

Eric Hileman: [00:35:28] wait, how many were they showing on there? Like 140.

Ivan Chepurnyi: [00:35:33] No.

Okay. So where, where does small amount of, shown on a page, but number of database queries is quite large. And as far as I understand, those products are simple products, so they’re not even configurables. So four page was only simple products. This is too much that we query. like I could understand, like, if it would be a page with configurables like suits, Konrath is okay, but it’s still not okay.

But sometimes, you know, like you can leave with it. But if we talk about page with simple products, this is completely a bad situation from point of view of the performance. And let’s see, can we zoom in into this Bart to the product least and let’s see what’s going on there. So there a bunch of stuff related to group around get associated products, BSS, simple, detailed product detail, group product.

I don’t see group products there.

Let’s, open, Oh. Did it open a new window? Sorry. I need to open any new tab. Not a new window. Hope it’s still going to be on recording. So, well, they just opened the product.

So this is a group product.

Eric Hileman: [00:37:26] Ah, yeah. Alright. Yeah. The different flavors

Ivan Chepurnyi: [00:37:32] but why do they go with blue products? It’s interesting

because you want to buy multiple of them at once, right? Okay. It makes sense. It makes sense.

So as Anna sends a mostly sell group product zone,

Eric Hileman: [00:37:57] bandaids, like what’s that? Those are group products.

Ivan Chepurnyi: [00:38:11] This one actually, I don’t see even my button.

I kinda do the shopping cart or what. Maybe it’s a broken product because it’s still not the production environments, right?

Eric Hileman: [00:38:27] Yeah. Yeah. It’s

Ivan Chepurnyi: [00:38:28] preview. It gets good sound stuff. Okay. So do items available is probably two types of the products right.

Okay, so you have a, let’s say, Zeus product being sold and then you have to, sub products or was there,

Eric Hileman: [00:38:58] yeah, but that wasn’t even like, that wasn’t even in the same product or at a different quantity. That was like a, it was like a knee wrap. I thought, like. Yes.

Ivan Chepurnyi: [00:39:12] Yeah. So, that’s why, yeah, I kinda sent why they put it like that. Because for instance, you want to buy cleave war, right? And you don’t want to list every single flavor of the Creek bar separately.

Right. But at the same time, you want to allow a person. Just decide, Hey, I want zzz sends this flower without going back to the same page. You know, so you just want to, let, to add it to the shopping cart. So it should be quite easy. don’t understand why they’re using it, but is there is definitely some performance issues with that.

because, this, BSS simple product, so, it’s probably before every single group product, it does a query to take of the quantity of products available. So here we see, Oh. Should it, it did, move it to a new window. That’s a weird, okay. So here you see, when you have a group product, it tells us two items available, right?

And here it tells us also two items available. And most probably. the price is also a stake in from at least those a group product items. So instead of, let’s say, using a price index, he just, it’s raised through a list of simple products is, it’s also a bit of performance issue.

Eric Hileman: [00:40:45] And this, the individual products are listed there as well.

So if you go to any of the individuals, you see all of them, but then there was also,

Ivan Chepurnyi: [00:40:57] yeah. And

yeah, we also have some kind of inventory modules at this also doing something weird.

Eric Hileman: [00:41:10] why am mine  well, yeah, this Liberty would be them. While mind is a, that’s definitely a vendor, so I wonder if they customize that extension.

Ivan Chepurnyi: [00:41:22] Could be. But the, yeah, this is there some kind of. Performance issue. So is there, unfortunately, without seeing the code, I cannot tell for sure.

You know, like what the problem was there. But as this part, it was a page takes quite a lot of time to render. however, comparing to the rest was a page load time, like 16 seconds. This is minuscule, right? The products rendering

Eric Hileman: [00:41:47] only 5% quarter.

Ivan Chepurnyi: [00:41:50] Yeah. But there is other parts of the pages, right? It was the page itself.

And yeah,  definitely is. This is the same as on the other pages. However, probably after is that we will see some filters rendering and here’s probably where a lot of issues are happening. So yeah, alert filters. and here we have a lot of costs to our six search. Yes. So this is 21, call to Elasticsearch.

It is quite a lot. So,

and also those are not very well optimized elastic search queries. Because like document search a little bit weird from, for the fuel.

Eric Hileman: [00:42:46] It was amnesty, wasn’t it?

Ivan Chepurnyi: [00:42:50] Yeah. So definitely, we recommend to, switch to elastic shoot from show by, This is, is a standard recommendation.

Eric Hileman: [00:43:01] Yeah.

Ivan Chepurnyi: [00:43:03] And, Yeah.

What’s up was the filter. Yeah. So as you see as a filter time, unfortunately I don’t see what’s happening inside by, but by the time it takes to render as a steam plate, I think there’s a lot of issues with, show by extension was performance over here because like 940 milliseconds, it’s a lot to render a single filter.

Right.

Eric Hileman: [00:43:26] Why do you think we see so many people using Annecy shop by when elastic suite is out there.

Ivan Chepurnyi: [00:43:33] well, mostly just because they have very good marketing to sell. this stuff on marketplace. Also, Marcy’s, we already know Magento, in, how is gold right now is the extension providers, what kind of partnerships they have,

Eric Hileman: [00:43:47] technology and the technology provider.

Yeah, I don’t know. Yeah.

Ivan Chepurnyi: [00:43:53] But in general, like there is a top tier partner, right? So I think there are platinum or stuff like that, or how is it

Eric Hileman: [00:44:03] certainly selling a lot?

Ivan Chepurnyi: [00:44:04] Yeah. and, is they’re very well known. of course developers, because he has a provide quite good functionality.  functionality. It doesn’t scale with the size of your database because like on a small websites, it could be okay, but as soon as you have a reasonable data, Aziz extensions, they’re not working very well.

That’s a good point. So like, for a small merchants who might have, let’s say, 500 products. Right, a musty ordered navigation show by, or whatever. Mike work well, like, and this is probably, with Swedish data sets, extension developers are usually testing their products. They never take, let’s say, not the base of, 200,000 products and see how’s their extension of performance owns his database.

Right? Because I’ll be

Eric Hileman: [00:44:55] real curious to run this efficiency score. And take the list of modules and see cross-reference the common ones and see what vendors are common and what extensions are common and see if this bubbles up. I’d be really curious to see if Shopify bubbles up on the inefficient stores.

Ivan Chepurnyi: [00:45:11] Yeah. Because for instance, here I see it. They have, like. Okay. 1400, right. So 4,800 products on this specific category. And those are group products mostly . So the actual catalog, like we’re not talking about all the other products, so I think they have at least 300,000 products in total. Right. The skews in a database.

Yeah. Is it the right estimate or,

Eric Hileman: [00:45:44] I don’t know actually, but that seems reasonable. Looking at the categories and

Ivan Chepurnyi: [00:45:49] the products. Yeah. So if we talk, take a look at the actual visible products, and if we click on a product, we see that there is at least two or three variations usually, and sometimes there is 21 or more, you know, like, okay, is this kind of stuff  no, it tells us, A lot about it that the way size, so they have a big, that the waist size and for them show by is just not going to make it because shell by was not developed for this, that assess this. A speculation is that that was not developed. Is that the sense maybe. Zay deeds. DSD didn’t care about performance, but I think they just didn’t see that as there’s a performance issue because they were developing based on small data sets.

And also to be honest, Magento also develops probably on small data sets. I don’t think that developers, on daily basis just installed our Jetta basis and, develop based on source larger the way there’s usually a development happens, like someone creates few tests, categories, and few test products and they just go on and develop functionality that zany it.

No one uses Zhou real production like database, during the development phase.

Eric Hileman: [00:47:08] There, there are the load test profiles you can generate. There’s what? A small, medium and large.

Ivan Chepurnyi: [00:47:13] Yeah. But the problem was that one, right? As at, it also wears synthetic, like you cannot develop based on it because this just like product one, two, three, four, five.

It doesn’t have for real pictures. It doesn’t have anything, you know, that would really show you, You know, issues with functionalities. Because usually for developing, let’s say alert navigation, you want to create virus filters. You want to fulfill a specific, attributes yourself because you want to.

You know, like best specific features you want to develop. You never gonna work with synthetic beta four does that matter?

Eric Hileman: [00:47:55] Yeah. It takes a long time to generate that large profile to like a really long time.

Ivan Chepurnyi: [00:48:01] And

Eric Hileman: [00:48:02] I can see why developers wouldn’t want to wait for that.

Ivan Chepurnyi: [00:48:06] Yeah. So. Is there is nothing wrong, you know, like was using simple one.

But at least if you have customers with large databases, take notice and optimize your code afterwards. Even if you’re releasing extensions that perform slow, try to take some feedback and improve it on the next iteration because. I think like all those, 25 or how many, elastics 21, elastic, skewed, elastic search, sorry.

It was 600. This extension. So although some elastic search ECDP requests can be really very well, reduced

jazz by. Maybe doing one request to elastic search to get all those filters in one go instead of, you know, doing it for every single filter. Because I think this is the biggest problem here with the filter itself. And another thing, I think as well as at, Does this extension, maybe also a six suit as well, has the same problem.

Like if you have, some attributes where you have a lot of options legs, this one, like,

Eric Hileman: [00:49:27] yeah, that is big.

Ivan Chepurnyi: [00:49:30] So he and refrains and C product group and product group in this case is related to this category. So we are right now seeing only values for this category. And for the world catalog cause there may be falling into functions, you know, we don’t know for sure, but probably there is thousands of options and they probably also to select on the product level.

and usually a developers though even take a look at the. Performance of, we’re looking at absorptions because they just use standard Magento. A source model is that this is very inefficient, because. Let’s say if you want to all put a label, let’s say for product group ID one or two. what a Magento does in a core, is very interesting.

So if you have a following of the functions for each of the options, that you try to retrieve a label, a Magento will thread through every single option. The check is this ID of this option. If sales and rule a label. And basically when you have, let’s say, 50, 50, items to show here, right? So let’s say there’s 50 of them, for it, it means that Magento will iterate, falls into options 50 times.

So it means like there is going to be at least, 50,000, of different, compares meant, to the current auction. Instead of using a hash map where it would be just a single Oh one operation just by looking up the option text by option ID instead of that Magento, it’s rates through every single option, object.

And that’s a little bit of performance issue. And I think.

Eric Hileman: [00:51:19] Is there, is there a way for this merchant to make Shopify work? Because they pre, I mean it looks like they put a lot of time and effort into it and the functionality is great. Like as a shopper, I would love all of those filters and to show me how many products are in each one.

It’s really cool. But do they have to really rebuild a lot to go to elastic suite?

Ivan Chepurnyi: [00:51:40] I think it has the same functionalities. So like you can show. You can have multiple fielders, you can choose multiple ones, like it makes sense. Just try it out. Great staging branch or whatever, like installs at extension.

yeah, it will require you to configure those filters because probably there is some configuration done. But in general, like the day days is the same for Reacher on reaches those filters are a waste. So I think mostly just about, The  just about does the time spent on configuring the extension and maybe changing a little bit the front end, but, if they’re not live yet, maybe it makes sense to take a look at it.

Make us do it,

Eric Hileman: [00:52:27] do it now.

Ivan Chepurnyi: [00:52:29] Yeah, it is better to do it now than go live and, you know, run into issues with, you know, sole categories and customers complaining that they cannot do anything on their website. So here, here we have, and other issue was based speed, but here is where a small, comparing to a zip.

There’s alert navigation itself, so, right. So if we take a look here, like Zoetis navigation takes a huge amount of time, like at least one sort of the pay was a page time of this 16 seconds spent on a lot of navigation products. And we also have an issue with a standard things like a menu, but menu already discussed on the homepage.

So

let’s take a look at the product page itself, right? so let’s start with a simple product page.

A weird, I can’t edit to the cart. Maybe they have some kind of permissions. maybe you have to be a registered

Eric Hileman: [00:53:43] or it’s intentional cause it’s preview. It’s not like it’s kind of staging.

Ivan Chepurnyi: [00:53:50] could be, but I think I was able to add, let’s say, a group product to the shopping to the shopping cart. Right. Hmm.

But I’m not, you could

Eric Hileman: [00:54:01] add quantities. You could change quantities, but could you actually add it? I don’t remember seeing a,

Ivan Chepurnyi: [00:54:08] Oh man. Maybe as it was, maybe there was no art. The car brought them. So here we are. This is the product page itself.

Eric Hileman: [00:54:32] Yeah,

Ivan Chepurnyi: [00:54:32] so it takes some time

Eric Hileman: [00:54:49] 99 bottles of honey block on the wall, 99 bottles. Any thought?

Ivan Chepurnyi: [00:54:56] Yeah, I think there was something happening. Right? Okay. So this is quite a lot for a product beach. Then seconds, this is, I think too much

and majority of the time is actually spent on my skill. So like. 547 milliseconds. This is a lot for my SQL queries. So we will

Eric Hileman: [00:55:21] page.

Ivan Chepurnyi: [00:55:22] Yeah. What kind of queries are there? It’s interesting. Okay. so show by Brent. Yeah. This is taken two seconds to render on a product page. So right away, like whatever you are doing, stroke by brand, it’s probably just a way to click on a 3m category, like on a freedom button and go into a

all three and products, right? So this is, basically, Everything, was it the you you need to do. But, probably an extension has much more functionality and probably, by they went for that functionality. Like it shouldn’t take this amount of time to render the brand logo and have a lean through, go through the page, you know, like from that, location.

Eric Hileman: [00:56:27] Yeah, that’s what, what is it doing? It’s, I mean, what is actually in that two seconds, the database waiting for database queries or IO,

Ivan Chepurnyi: [00:56:38] some kind of get attribute options. So they take all, okay, so here is what’s happening. I don’t see a code, but I already see some, methods, said, give me an idea as a, probably use, attribute options of Magento in order to represent brands.

And there’s also that with options, Zen loaded completely. So like probably all the brands you have in the store gets loaded and created as an object, and the Zen probably eat up the rates through all those options in order to find the right grant. and Zen it has is get a Brent aliases that takes another second and then it converts options to something else.

So, yeah. I think the, just, some codes that even shouldn’t be there, like getting Brent URL shouldn’t take one second, right? you can pretty much know in which location your brand page is going to be. You. You don’t need to spend one second to generate to Euro each just too much time, here and get, option settings.

Data also should not take. Is that my time? So this, extension show by Brandt is a huge performance bottleneck on this page. Definitely. So make sense? Maybe just to replace it with custom functionality by developers because yeah, it just takes a lot of. precious, CPU time. okay. and we’re two objects.

Yeah. So Brent Ellis is, this is definitely takes Zim most of the time of the product view rendering as you see here. And there was at least 995 milliseconds. Spent on IO, so it means probably database or some for exempt. And here we have another extension of that. Is this case, takes own version number, from configuration.

We know it’s a bad practice. We already discussed it on multiple shows before. so it’s, something that, okay, so is this Wyoming Cora helper data constructor, and it tries to access on version number. And this one introduces at least 784 milliseconds on the page with a lot of the fire time because it reads all the XML files of all the modules in a file system.

So this is very inefficient. if you need to access your own, module version, just create the constant, don’t read it from XML file because. Especially don’t read through XML file by reading all the other module registrants as well, because it doesn’t make any sense. Like if you have some logic, depending on your module version, please great.

A constant, and the date is this constant with every single release, the not, do not just, put it in XML file and think like, yeah, you still modifies this version, right? When you release the new extension version. So. Just use a constant, don’t, don’t use it in a module XML version because first of all is that versions that you are using in one, two weeks smile also affects as a database to top scripts.

And since 2.3, the Magento module version is completely optional, so you don’t need to use it, in order to be able to, create a set top of grade. And if you modify a sit down version with every single module, update. It’s a bad idea. So just don’t do it. use a constant, this is another part, and this is actually, Oh, what we see here, like if we take a look from the 3.4 seconds of product view, HTML, so it was a rendering of the product itself.

It takes. Two seconds to render a Z is Brent, and in other seconds to render, whatever it is, related to you are meant to extension. I don’t know what kind of extension because it doesn’t show me everything you just showed me is that there is some kind of. help are being called. So this is, a lot of time saved on page, rendering.

okay, so what do we have here as well? Is you here half? also, something else, but I don’t see what it is. unfortunately. Is there a something that related through the catalog, but I can see, Oh, it’s probably, mm. Oh wait, wait a second. This is bad. This query looks terrible. it’s Brent that tribute.

Okay. So something I gained from, as a brand, and let’s see, for musical Strack. Goals back, what’s happening, almost dinner. okay. Show by Brent product more from this brand. Oh yeah. This is, this is a classic and musty. So what they are doing here. Zane tried to show more products from the same brand, right?

And these small products from the same brand, they want just to show different products each time, right? So what did they do? Zara using M very magic, order by, in my skill called order by rent. And if you consider that they take all the products of freedom brand, this is probably Apple of, follows

Eric Hileman: [01:02:39] them all up and then randomize them.

Ivan Chepurnyi: [01:02:41] Yeah. So now from my skill perspective, like you are in my , you get the query. Hey, I w I want to, get, all the products of this brand and Zen. I want to order them in random position and Xinjiang through Germany. Who’s the first one. Like,

if you want to create Alyssa for recommendation, just create an index. Like if you have some kind of logic, like, you want to show, all the product from those brands, JAST, create an index in which you specify, or would it be position and let’s say refresh it every, every hour or something like that.

Who is when you run them position. But don’t use order by rent. Order by rent is the worst order you might have scale because it results always in terrible sword. And your queries are gonna perform very bad. So that’s why we see here as is 506 milliseconds, because of this, restrict by Brent extensions that.

I will put those products in random order by loading all is a brand that tributes. So let just go again, here. So yeah, here, by the time here with Caesar’s, order by rent, you see this one takes 125 milliseconds. So this is huge, huge, huge, huge for my kale and other one that is MSI. So no surprise and say, takes 41 millisecond, applies the most recent femicide patches.

And if it still doesn’t help, they can also contact me. So I have, someone with my solution for them. here we have, CMS blocks like 20 queries to CMS block. okay. let’s see. On a page, I don’t see 20 same as books here. So this is looks weird. Maybe it’s somewhere in the general page structure.

maybe on other pages it’s also happens, but yeah. Here it looks a little bit strange. There’s so many same as what queries. yeah, this super link and this kind of queries itself, things that’s related to page cash. I’m going to release an extension, that’s gonna fix this problem once and for all by disabling this plugin completely.

yeah. here a bunch of MSI queries. So I seize the rest of the Aquarius are mostly MSI as the biggest one. from the performance standpoint on this page, is this order by rent? Because, if you know, let’s put it, it also is this way. So imagine you have a thousandth of concurrent visitors on your website, and each of them opens the product page of the same brand.

A, is there a probability in my scale to create the look, wait, timeout, because, every single queries is gonna. Getting the rate at least of brands. it’s, it’s going to do it, by, by, using.

Table sword. So let’s say build a huge query. Two, three rows of products was his brand. You get it. They both sort. And if you have a not read, committed transaction is Alation mode in my SQL, my scale will look the records related to this brand. And if someone going to update a database, you’re going to get a lot of, walkway timeouts on those querys.

And taken into considerations that’s, this is not the way query. It takes 125 milliseconds. That means is there a huge probability of a walkway team out? Because queer is very heavy.

So, unfortunately I think we can’t, review, adding to cart. Oh, did it actually record this? View? I think not. Okay. Again, I’m sorry to the worst, but let’s just open here as well. just this thing. So here is Aquarius. We were talking about our, Wade. It’s essential. Okay. Somehow it was opening it in a new window.

Eric Hileman: [01:07:06] Yeah. I didn’t catch that either. So

Ivan Chepurnyi: [01:07:09] yeah. In general, like I think it was a in with OBS records only one window. It doesn’t record a, another windows gets opened in front of folks. But somehow I, I clicked, somehow on view timeline and it’s opening it in a new window, but in general, try to catch

Eric Hileman: [01:07:31] it next time.

Ivan Chepurnyi: [01:07:32] Yeah. So here is the issue. Zetia is with this query, ordered by rent on product page. and here is all the styles that we were talking about, like, this, Mosty show by Brent plugin. And here’s also. is that what you are meant? Constructor, itself? So basically in an ideal situation, like is there a time on the product page?

Can be like 2.5 seconds max. It’s, you’d say when it got to be able to, my seven father on if they actually, enable composer of the loader optimizations we see here on the left side. Is it common thing? Like

Eric Hileman: [01:08:17] once you do that once, do you always have to do that every time you deploy

Ivan Chepurnyi: [01:08:22] a, yeah, you have to do it on every single deploy because, Magento generates classes and you need to have to discover them and so on.

So usually you add it into your build pipeline to make sure that when you push a new changes, Buying shelf operations are automatically applied, so you never forget to do it. Otherwise, you know, like manual steps are always prone to missing some commands to run or something like that. Okay. So I think we are, kind of done.

Eric Hileman: [01:08:52] Yes.

Ivan Chepurnyi: [01:08:53] So because unfortunately I can’t test at the cart because I don’t see the card by them.

Eric Hileman: [01:09:00] So they need to compose their autoload for sure. But the big thing is to try the MSI performance patches and try removing amnesty more from brand and see if that gets them where they want to be. If not, they’ve got to go the full elastic elastic suite route.

Ivan Chepurnyi: [01:09:19] Yeah. Because I’m. It makes sense to try it out.

Eric Hileman: [01:09:27] so, I mean, I don’t see how they could, I don’t see how they could launch this the way it is, unless they get some gains from the more by brand and the MSI patches, but still,

Ivan Chepurnyi: [01:09:40] but I can imagine like, was eMerchants legs, legs this, this is usually a type, it was a merchant who updates products quite frequently.

So even he was able to try to rely, let’s say, on the varnish, Castro South to, you know, deliver a reasonable experience for Zante users. It won’t work because as soon as they change the price or Sambora gets out of stock. I

Eric Hileman: [01:10:04] mean, how could you even put varnish cache on this page with all of the filters, you know, showing that number of products.

Ivan Chepurnyi: [01:10:14] Yeah. But my main, like as soon as one was a product on this category page, it’s at least when it was brought up, it gets out of stock. Your cash has done and was a merchant with this number of small products that probably sold, this gets sold. You know, like quite often. It. It means like, yeah, it’s just not gonna make it.

It’s just going to be taking too much

time. Just was no cash. So it makes it, if it is a case that was in March 10th where you actually need to optimize your, the name of grander in time, you can’t just rely on cash in this case. They have too many various products, is that the guests changed? Folds. The time and performance here is quite critical, in my opinion, to be, fixed properly.

So.

Eric Hileman: [01:11:13] Cool, mate. Maybe I’ll have some interesting, performance stuff to show next week with the average times and efficiency scores and, versions and then modules. I’m really interested to see if there’s any common modules like common offenders.

Ivan Chepurnyi: [01:11:29] Yeah. It would be a great to also create a machine learning algorithm.

Yeah. Jealousy by knowing which extensions are there to classify customer base potential slow with high risk, high risk customer, we’re going to charge you more.

Eric Hileman: [01:11:53] No, but honestly what we want, what we would like to do is we would like to reward efficient customers. It’s like the insurance companies here, the car insurance companies, they’re doing this thing where they’ll send you out this little adapter, you plug it into the OBD, two port on your car, you drive it for six months, and then they say, okay, you’re safer than most of the people out there.

We’re going to give you a discount. Like I save, I think 8% on my car insurance by doing that. It was kind of the same thing like, you know, for us, since we’re a session based pricing and everything, like if you’re really well optimized, you know, we’d like to give you a discount and if you’re not, then well, we need to talk about an upgrade.

Ivan Chepurnyi: [01:12:35] Yeah. It’s, it’s, it’s also like, even like if you charge this customer by session, It’s not a good for a business where the customer can buy anything because the web is slow. So it’s very important to not only think from quite a few of like if they would pay for the cost themselves, it would cost a lot more than Zinpro pain right now because this kind of performance.

Want the be supported on a regular throats was the same pricing as you

Eric Hileman: [01:13:09] have? No, no. If you’re buying by the core, your your net, you’re going to need tons of cores. And not only that, but you’re going to exceed. We have a lot of customers who are very inefficient, who would, who would well far exceed what is even in a single chassis.

So now you’re talking like a huge cluster and it’s, yeah, it’s crazy. Especially when you have. You keep peak traffic and you’re really inefficient, you need a significant amount,

Ivan Chepurnyi: [01:13:31] you know, like, let’s take a look like there are six seconds generation diamonds, a day group page. And if you have, let’s say, hundreds of customers, like for 60 seconds, it means like one of FPM process is always busy.

And if you have hundreds of customers, Rosen’s website, there is. You have to have tons for sources like, and how does of customers, it’s nothing, right? It’s, it’s even not the buyer. See, just people who just browsing the website. So you have to have really. Huge pharma FPM knows too, to support this, this kind of generation times, because like 16 seconds, it’s like one or two seconds.

It’s okay. It’s not perfect from point of view of performance. Like you can achieve 400 milliseconds if you really invest them to performance of your store, during the rate the category page. But. Like jazzed by fixing obvious performance issues, you can achieve like a two, three seconds generation time on category pages, two seconds, generation time on product pages.

This is reasonable. You can work with it, but 16 seconds, 10 seconds, this is too much. And it gels gonna not scale at all on production. like. Yeah. You have all the cashless enabled, but Cassius won’t save you from, this kind of Phoenicia. Yep.

Eric Hileman: [01:15:00] So maybe we’ll come out with an optimization service to help agencies and developers and even end merchants if they want, augment their, their dev ops into the performance stuff.

Ivan Chepurnyi: [01:15:11] as soon as I finished with my current, overload of the work, because I have. Do much customers right now, and yeah, it’s quite tough to manage your toll, in timely manner. but as soon as I, get finished with that one, I plan to restart my, training course. so I have a performance training course.

I think the ones that you are, guys from and girls from major macho, were attending, last September when I was in New York.

Eric Hileman: [01:15:38] they really liked that.

Ivan Chepurnyi: [01:15:39] Yeah. So this is basically what I’m planning to do, especially considering, all the situation right now in the world. It’s going to be completely online course.

I already ordered, Viacom table it in order to be able to draw on it because, I usually draw a lot of stuff in training room on the white board. But unfortunately in online situation, like I don’t have whiteboard at home, but in training room locations, they’re usually always whiteboard or Flipboard or whatever.

I can draw, draw on because, I have a lot of exercises in training courses where we discuss specific, customer requirements. And. In which ways you can go wrong with implementing it to, let’s say, just was where core functionality, by striving to not modify Magento at all. so, I, I really think, just our community just needs a little bit more, insight into the way how to fix the issues.

Like. This show is good to show, Hey, so there’s all sorts of problems, but, still, like we are not showing how to fix them, first of all, because there’s not enough time in the show. And, second of all, yeah, it’s just impossible to do it without really explaining with real examples and real code samples.

And so on.

Eric Hileman: [01:17:03] Alright. Yeah. Well, thank you for Blackfire, for sponsoring. We really appreciate it. Love the tools. get at us on Twitter. Load in the loop or email. L I T L at  dot com. yeah, at us, if you want to get on the show, we do put other people, we will put other people who aren’t customers here on the show.

but our customers get priority for sure. So shout us out, like subscribe, follow, pin us on Pinterest. Any final, final words?

Ivan Chepurnyi: [01:17:33] yes. Thank you very much. Iran who still, watching till this moment. So, yeah, give, safe and, we all comes as current crisis and everything gonna be fine. So til the next, show.

Leave a Reply

avatar
  Subscribe  
Notify of

Ready to get Started?

Sign up now