NOTE: This is a continuation of this thread which I have been doing more research into.
Yes, I know the response to this is going to be “Well, duh!”, but just in case I am wrong, I am going to put this question out there:
The number of releases in a Sales Order is directly related to how long it takes the Sales Order to open, or to do anything with.
[insert ‘Well, duh!’ here]
Anyways, we have Sales Orders that are in excess of 5,000 releases, some of which are as high as 12,008 releases. Sometimes those releases are scattered between 100+ lines, other times the Sales Order only has 1 line (with 12,008 releases…)
Now I understand that the more data that is returned from query (such as SalesOrder.GetByID), the longer it is going to take to load. But, to me it seems that taking well over a minute is a bit excessive.
I sent my DB to EpicCare and they say that they can open those Sales Orders in 3 seconds flat and are unable to reproduce what I am seeing in my environment.
With that knowledge, I decided to poke around a bit more and ran PDT. Upon looking at the ‘Server Diagnostics > Summary Analysis’ tab, I saw this:
That is mirrored in a Client Trace Analysis as well:
As you can see, the Average Execution Time for SalesOrder.GetByID is 45 seconds, which is right in line with what I am experiencing.
The next thing I did was go and disable all Method and Data Directives that relate to SalesOrder / OrderHed / Customer / CstCnt and tried to open the Sales Order again…47 seconds.
I then checked to make sure I was only loading the “base” version of the menu…42 seconds.
Going back to PDT, the only thing in the Config Check that comes back as a Fail/Error is:
I don’t know why that is throwing an error though. We are on SQL 2017 running on Server 2019. From what I can tell, that meets the requirements for 10.2.400.X. Regardless, I don’t think that would be the reason for the extreme load times with this Sales Order…or would it?
The SQL Server and the App Server are on separate pieces of hardware. The SQL Server is averaging between 3% and 7% CPU utilization with 300GB of memory (384GB in the system).
PDT does return 1 Warning as well, which is this:
That prompted me to go and set that to False, but I am still at 46 seconds to load one of the larger Sales Orders.
My questions are:
- How did EpicCare load this Sales Order in 3 seconds in their test environment? Is it simply because they have extremely beefy hardware?
- Is there something with the SQL Server configuration that I may be overlooking that would potentially be causing this?
- I can’t say I am proficient with using the SQL Profiler, but I am willing to learn if someone is able to point me in the right direction.
- Am I chasing my tail here and this is simply how Epicor handles large Sales Orders? What, if anything, can I do to speed up loading the larger Sales Orders?