Developer forum

Forum » Development » Selected facet - affects performance

Selected facet - affects performance

Dmitrij Jazel
Reply

Hi Everyone,

We have a solution here that has 699103 products. on Custom application. 8.8.0.0

And we are using new indexing - with no facet groups attached - no problem so far.

Index is rendering all products, nicely so far. We also created a separate website based on Condition templates, same applies for Catalog product list aswell.

Basically we are making sure that front-end is not in the way.

 

Than Facets come into play.

We have 1 Facet group

That contains 11 total Facets

7 of witch has 0 options

1 has 120, 1 has 1678, 1 has 133 and 1 has 1678 options.

Facet loop in the ProductList.html template is not defined - all it does just listing Product list.

 

Now as soon as we connect our FacetGroup in in the ProductCatalog module settings.

It emmideately slows down Product catalog allot.

 

To conclude all of the above:

As I mentioned before, Index as such can deliver all 699103 products, without facet group.

Product List template is not requesting any facet loops. Pure product list. – when facet Group selected, massive drop in performance observed.

 

Question:

Would like to hear thoughts or suggestions, on what can we try doing/checking, and how to improve performance.

/Dmitrij


Replies

 
Jeppe Eriksson Agger Dynamicweb Employee
Jeppe Eriksson Agger
Reply

Hi Dmitrij,

Could you try adding the parameter Debug=True to the url? The execution table can show you where the slowdown occurs.

- Jeppe

 
Dmitrij Jazel
Reply

Hi Jeppe,

Thansk for reply, this does bring very nice overview of what is going on! :)

And this immediately caught my eyes 

12:01:30.741 Index query executed - took 30175,1159 ms:
+Active:True +LanguageID:LANG1
30188 -359

Other operations take miliseconds to complete.

 

/Dmitrij

 
Jeppe Eriksson Agger Dynamicweb Employee
Jeppe Eriksson Agger
Reply

We have not seen that behavior in our internal testing, but we have also not had 700k real products to test. You could try removing the facets and adding them one at a time to see if it's a specific facet that causes the issue. This is is unsuccessful, then we probably need the solution so we can investigate.

- Jeppe

 
Dmitrij Jazel
Reply

Ok if I add/remove facet, do I need to rebuild index?

I don't think I have to, cause index is a data source, Facet is just something that uses that datasource (atleast as far as I understand).

I removed 2 major Facets, saved and closed, but no possitive effect so far.

 
Jeppe Eriksson Agger Dynamicweb Employee
Jeppe Eriksson Agger
Reply

No, it's not necessary to rebuild the index if you change your queries or facets. You got it right.

 
Dmitrij Jazel
Reply

Ok, since this did not reduced the load time of that particular step not by a milisecond - I assume next step would be to wrap it up and send it to you guys?

In this case I would need to know what do I have to wrap?

As I mentioned before, this is a Custom application.

There is a DLL that we are using, that get prices from ERP, but that is pretty much it.

 

/Dmitrij

 
Jeppe Eriksson Agger Dynamicweb Employee
Jeppe Eriksson Agger
Reply

Are the performance issues still present if you remove your custom code?

 
Dmitrij Jazel
Reply

Well than strange thing happen.

If I remove it, than yes solution becomes faster, but Facets are gone.

But I think that it becomes faster because it does not invoke any facets.

 

In API code there is nothing that should be on the way of facets, just plain ERP call methods, for Price provider and Order complete notification.

 

/Dmitrij

 
Nicolai Høeg Pedersen
Reply

What is the size of your hosting environment in terms of memory? How big is your index files, take a look at /System folder and find the index there.

 
Dmitrij Jazel
Reply

Ok, we are going to try adding new repository, and add one field at a time, and not use ProductIndexSchemaExtender to add fields.

Than build facets one facet at a time and see where the slow happens.

 

 
Dmitrij Jazel
Reply

Total size of System folder is 2.61g, server has 60 GB left on Drive D and about the same on Drive C.

Total space available 80%+.

 
Nicolai Høeg Pedersen
Reply

Not space, memory. Say you have 2GB of RAM, running SQL, IIS and a 2 GB index... Not good :-)

 
Dmitrij Jazel
Reply

Well currency it uses only 18%, nothing suspicious.

Total size of Installed memory (RAM): 16 GB

 

While building index, IIS process takes 25% of CPU and 1.5 Gig RAM

 

/Dmitrij

 
Dmitrij Jazel
Reply

Unfortunetly we are getting the same issue if we are trying to create a new index, with 4 fields, that have nothing to do with price

ProductID

GroupID 

and 2 more Custom fields

Still observing the same behaviour.

 

/Dmitrij

 
Dmitrij Jazel
Reply

What we also noticed is variation in responsie time. Depending on what group you are slecting and how many facets are defined.

 

/Dmitrij

 
Dmitrij Jazel
Reply

Was browsing forum for things we noticed in our solution.

And what I noticed is this:

http://developer.dynamicweb.com/forum.aspx?PID=48&ThreadID=42102

And simptoms are simmilar, Logs > eCom > Frontend > getting same error message: 

GetProductsFromIndexQuery

For some reason think they might be related.

 

Question:

Why Logs > eCom > Frontend > log can cause Error like this:

[2/13/2016 1:38:49 PM]:
GetProductsFromIndexQuery

Logging 'Exception':
Type: System.Collections.Generic.KeyNotFoundException
Message: The given key was not present in the dictionary.
StackTrace:    at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Dynamicweb.eCommerce.Frontend.Frontend.GetProductsFromIndexQuery()
InnerException: [null]
Data: System.Collections.ListDictionaryInternal
Source: mscorlib
Object output: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Dynamicweb.eCommerce.Frontend.Frontend.GetProductsFromIndexQuery()
------------------------------------------------------------


Logging 'URL':
http://changed.sitename.no/Default.aspx?ID=2160&Purge=True&debug=true

 

 
Nicolai Høeg Pedersen
Reply

Hi Dmitrij

We need a link to your solution. Please create a case and send me the case number.

BR Nicolai

 

You must be logged in to post in the forum