Gravatar for rhowe@productiveedge.com

Question by howejr, Nov 24, 2015 3:21 PM

Multi-List with Search Field Performance

Hello,

We are having a Performance Issue with Sitecore Content Editor where we will select an item and it take 5 to 6 seconds for the right side of Content Editor to appear with the item fields and information. We've gone through a number of settings (disabled cache limits, not render collapsed sections, not display standard fields) and finally taken dotTrace dumps of the action. What we've come to find is that the items displaying the problem have a mutlilist with search field and the calls to Coveo are taking 4+ seconds. The primary case we're working on has a start item specified and filters by 3 different template IDs. There are 2500 items under the start item.

Can anyone suggest any thougths about how we can look into speeding this up?

I appreciate any suggestions/help.

Thank you Ryan

Gravatar for jflheureux@coveo.com

Comment by Jean-François L'Heureux, Nov 25, 2015 2:38 PM

Do you have an example of a Coveo query generated by this Multi-List with Search UI component? You can find this in your CES query logs or by looking at the CES console while using the Multi-List with Search UI component.

This would be helpful to troubleshoot the slowness.

Thanks,

Jeff

Gravatar for rhowe@productiveedge.com

Comment by howejr, Nov 25, 2015 4:42 PM

The datasource of the field on the template is defined as:

StartSearchLocation={3E599545-9679-48CA-A740-4D6C0FA8A480}&TemplateFilter={73D14F91-8F89-4A65-8F0E-ECE1A1F15717}|{DD822371-2592-4E4A-AC44-891F840225E2}|{C884042C-F8C6-477A-828B-FD5B10E2CFC7}

The following 4 queries are an example of selecting 2 different items. Each item selection seems to run this twice. The time on the query seems to be fast so maybe its the number of items being returned?

Item 1:

Query (@fz95xpath42977=="3e599545967948caa7404d6c0fa8a480") ((@fz95xtemplate42977=="73d14f918f894a658f0eece1a1f15717") OR (@fz95xtemplate42977=="dd82237125924e4aac44891f840225e2") OR (@fz95xtemplate42977=="c884042cf8c6477a828bfd5b10e2cfc7")) (@fz95xpath42977=="11111111111111111111111111111111") (@fz95xlatestversion42977=="1") (@fz95xdatasource42977=="sitecore") performed by sitecore\admin [Sitecore Security Provider for SITECORECMSTG-Stage]. 1349 results in 0.422 seconds.

Query (@fz95xpath42977=="3e599545967948caa7404d6c0fa8a480") ((@fz95xtemplate42977=="73d14f918f894a658f0eece1a1f15717") OR (@fz95xtemplate42977=="dd82237125924e4aac44891f840225e2") OR (@fz95xtemplate42977=="c884042cf8c6477a828bfd5b10e2cfc7")) (@fz95xpath42977=="11111111111111111111111111111111") (@fz95xlatestversion42977=="1") (@fz95xdatasource42977=="sitecore") performed by sitecore\admin [Sitecore Security Provider for SITECORECMSTG-Stage]. 1349 results in 0.03 seconds.

Item 2:

Query (@fz95xpath42977=="3e599545967948caa7404d6c0fa8a480") ((@fz95xtemplate42977=="73d14f918f894a658f0eece1a1f15717") OR (@fz95xtemplate42977=="dd82237125924e4aac44891f840225e2") OR (@fz95xtemplate42977=="c884042cf8c6477a828bfd5b10e2cfc7")) (@fz95xpath42977=="11111111111111111111111111111111") (@fz95xlatestversion42977=="1") (@fz95xdatasource42977=="sitecore") performed by sitecore\admin [Sitecore Security Provider for SITECORECMSTG-Stage]. 1349 results in 0.174 seconds.

Query (@fz95xpath42977=="3e599545967948caa7404d6c0fa8a480") ((@fz95xtemplate42977=="73d14f918f894a658f0eece1a1f15717") OR (@fz95xtemplate42977=="dd82237125924e4aac44891f840225e2") OR (@fz95xtemplate42977=="c884042cf8c6477a828bfd5b10e2cfc7")) (@fz95xpath42977=="11111111111111111111111111111111") (@fz95xlatestversion42977=="1") (@fz95xdatasource42977=="sitecore") performed by sitecore\admin [Sitecore Security Provider for SITECORECMSTG-Stage]. 1349 results in 0.031 seconds.

Thank you for your help. Ryan

1 Reply
Gravatar for jflheureux@coveo.com

Answer by Jean-François L'Heureux, Nov 25, 2015 5:44 PM

Thank you for the queries. They are simple queries with only exact match field expressions. CES is able to find the search result set very quickly as we can see.

Those queries are probably sent from the Sitecore LINQ module. Can you give me your default number of results setting please? It is the <DefaultNumberOfResults> node of the Coveo.SearchProvider.config file. By default, this setting is set to 10 so only the first 10 search results are returned. If you have increased this number, CES would need to send all the fields of all the results to Sitecore. This can be a long operation depending on the number of fields in your field sets and on your search results.

One thing that can be done is to optimize the LINQ queries (see Optimizing LINQ Query Performance).

Gravatar for rhowe@productiveedge.com

Comment by howejr, Nov 25, 2015 6:00 PM

Yes, we are still at the default setting: 10

I will need to consult with some other individuals to see if anything can tuned with respect to the Optimizing LINQ Query Performance. I'm not sure what fields we are and aren't using but believe we are returning/indexing everything.

Does Coveo return an estimated number of results as when the MultiList renders, it tends to specify that it has 123 results while we can see from the query that over 1,000 exist and from the setting above, shouldn't only the first 10 results be being returned? Any idea why the multilist would indicate 123 then?

Thanks Ryan

Gravatar for rhowe@productiveedge.com

Comment by howejr, Nov 30, 2015 10:09 AM

I ran a test this morning where I modified the StartSearchLocation of the query to different items that had smaller number of children. I found that when I specified an item with 7 children, the page rendered in about one second. I then modified it to items that had 21, 74, 958 children and finally back to desired start location which has 2561 children.

It was definitely noticeable with the low child counts the page rendered in acceptable time. It had a feel of being linear time increases (specifically comparing the <100 children to 958 children to 2561 children). I fully acknowledge though this is a bit inexact in that I'm clicking the item and counting etc and getting differences when everything is under 5 or 6 seconds is tough.

Is there any way for me to see what is being returned to Sitecore from Coveo to ensure the default 10 items is being obeyed? How is the count of items requested specified to Coveo (is it part of the query)?

Thank you Ryan

Gravatar for jflheureux@coveo.com

Comment by Jean-François L'Heureux, Nov 30, 2015 10:54 AM

To check the queries, you can use the Query logs section of the Coveo Enterprise Search Administration Tool: Logs > Queries > View Log button. You can configure it to display only a certain time frame and the level of details you want.

I just tested on Sitecore 7.1 Update-3, a Multi-List with Search field with a source of StartSearchLocation={11111111-1111-1111-1111-111111111111} or StartSearchLocation={11111111-1111-1111-1111-111111111111}&TemplateFilter={AB86861A-6030-46C5-B394-E8F99E8B87DB} (only templates) and each time, the items are added to the right side instantly.

Can you give me:

  • Your Sitecore version (Major, minor, revision)
  • Your Coveo for Sitecore version (Major, minor, build)
Gravatar for rhowe@productiveedge.com

Comment by howejr, Dec 1, 2015 2:02 PM

We are using:

Sitecore 7.5 rev 150212 Coveo for Sitecore 3.0.1000

Gravatar for rhowe@productiveedge.com

Comment by howejr, Dec 1, 2015 2:06 PM

We also have a case with Sitecore going on this issue and they just came back with some additional information to share. As you can see above, each time we go to select and item in Content Editor and display it, 2 queries are getting executed. The first is apparently getting a total count of items for pagination purposes while the second is actually getting the items for the current page.

Looking through the trace information I sent him and the source code for the MultiList w/search field, he is seeing that it is the first query that is taking the additional time. In this specific instance it is taking 3.5 seconds for query #1 and 86 milliseconds for query 2.

Ask a question