I've found a problem in the Customer Portal.
In a Client that have a 3 Million Contacts, allowing thier customers to use the SLXCustomerPortal, they noticed the first time you enter the portal and go to new ticket, everything is fast.
As soon as you enter on a Ticket Detail, the portal gets really slow to the user that entered on the Ticket Detail.
Other users keep fast, the slowness is just after they enter in a Ticket Detail.
So, profiling a little i've found 3 interesting problems:
1-The Group Module, always try to return "SELECT COUNT(A1.TICKETID)" on every window after you enter Ticket Detail. No matter if you create other Forms (portal pages without entity binding), it always will query the count.
2-It repeats that query 3 to 5 times every postback. I think this is related to bad code using Lazy Loading.
3-It always make a query to CONTACT table for the current logged in portal user. Also makes the query 3 to 5 times.
I solved the following way:
1-I created a custom Ticket List (grid) form, and eliminated the Group Module on the base.master. This removed all the problems.
2-I created an index on the CONTACT WEBUSERNAME field <- This makes a huge difference.
Ok, i just wanted to share it for all who find this strange performance issue on SLXCustomerPortal... if you know the root of the problem, and a way to fix this... please share! |