I am investigating high CPU usage on the app server and when I did a live memory inspection I saw these Svc’s being called and consuming the most amount of memory.
Is there any possible way to see all the places they can be called from?
See attached pictures with orange text. If anyone can tell me what process could be running that calls these I would be more than thankful.
I also saw this same query being executed over and over and over on orderhed for different orders… so if anyone has ANY idea what could be calling this, that would help me out so much:
select Erp.OrderDtl.Company,Erp.OrderDtl.OrderNum,Erp.OrderDtl.OrderLine,Erp.OrderDtl.PartNum,Erp.OrderDtl.LineType,Erp.OrderDtl.OpenLine,Erp.OrderDtl.KitFlag,Erp.OrderDtl.ReWork as Rework,Erp.OrderDtl.CounterSaleWarehouse,Erp.OrderHed.Company as
OrderHed_Company,Erp.OrderHed.CurrencyCode as OrderHed_CurrencyCode,Erp.OrderHed.CounterSale as OrderHed_CounterSale,Erp.OrderHed.InPrice as OrderHed_InPrice,Erp.OrderHed.OrderDate as OrderHed_OrderDate,Erp.PartPlant.Company as
PartPlant_Company,Erp.PartPlant.KitAllowChangeParms as PartPlant_KitAllowChangeParms,Erp.PartPlant.PrimWhse as PartPlant_PrimWhse,Erp.PartPlant.ProcessMRP as PartPlant_ProcessMRP,Erp.PartPlant.NonStock as PartPlant_NonStock,Erp.Part.Company as Part_Company,Erp.Part.TrackDimension as Part_TrackDimension,Erp.Part.TrackLots as Part_TrackLots,Erp.Part.SendToFSA as Part_SendToFSA,Erp.Part.IUM as Part_IUM,Erp.PartRev.Company as PartRev_Company,Erp.PartRev.Method as PartRev_Method,Erp.PartRev.Approved as PartRev_Approved,Erp.PriceLst.Company as PriceLst_Company,Erp.PriceLst.ListDescription as PriceLst_ListDescription,Erp.JobProd.Company as JobProd_Company,Erp.FSRenewal.Company as FSRenewal_Company,Erp.FSRenewal.ContractNum as FSRenewal_ContractNum from Erp.OrderDtl with(nolock) left join Erp.Part with(nolock) on [Part].[Company] = OrderDtl.Company and [Part].[PartNum] = OrderDtl.PartNum left join Erp.PartPlant with(nolock) on [PartPlant].[Company] = OrderDtl.Company and [PartPlant].[Plant] = N’MfgSys’ and [PartPlant].[PartNum] = OrderDtl.PartNum left join Erp.PriceLst with(nolock) on [PriceLst].[Company] = OrderDtl.Company and [PriceLst].[ListCode] = OrderDtl.BreakListCode left join Erp.JobProd with(nolock) on [JobProd].[Company] = OrderDtl.Company and [JobProd].[OrderNum] = OrderDtl.OrderNum and [JobProd].[OrderLine] = OrderDtl.OrderLine left join Erp.PartRev with(nolock) on [PartRev].[Company] = OrderDtl.Company and [PartRev].[PartNum] = OrderDtl.PartNum and [PartRev].[RevisionNum] = OrderDtl.RevisionNum and [PartRev].[AltMethod] = N’’ left join Erp.OrderHed with(nolock) on [OrderHed].[Company] = OrderDtl.Company and [OrderHed].[OrderNum] = OrderDtl.OrderNum left join Erp.FSRenewal with(nolock) on [FSRenewal].[Company] = OrderDtl.Company and [FSRenewal].[ContractNum] = OrderDtl.ContractNum and [FSRenewal].[RenewalNbr] > 0 where [OrderDtl].[Company] = N’GFI’ and [OrderDtl].[OrderNum] = N’464870’
SalesOrder.GetRows could easily just be the Epicor client itself.
Be careful if this is a live server, but enabling logging, or enabling some additional log components, ought to help track down where these calls are coming from.
The SQL query is tougher to place, instinct isn’t telling me if it smells like Epicor vs a dashboard query!
So that’s kinda what I am trying to boil it down to. Do you think a tracker could call something like that though?
I mean look at the services being called, all sales order related, and then look at the query… I didn’t do any tracing on orderdtl table in sql to see what queries were being called there.
Hey @utaylor, my first suspicion would be that a user created a BAQ gadget tile and has the refresh interval set to 1 minute, since that’s the default interval (and who doesn’t want their BAQ to refresh every minute anyway!). Just something to check, but unfortunately, the “Where Used” functionality in the BAQ Designer doesn’t consider the gadget tile usage.
It doesn’t require a IIS reset, it is instantly turned on/off. Then monitor your ServerLog .txt files for more information, also the PDT tool can parse several of these and display them, if you get Notepad confused.
You can only enable them via Notepad, the Admin Console doesn’t have UI options for many of these.
If it was a baq though scott I would see the BAQDynamicQuery object being called in stack trace, wouldn’t I?
I never look at any of the tile functionality in Epicor because quite frankly it’s not my cup of tea, it bugs me a lot. Can you create a tile like that in 10.2.500. I have no clue who would even know how to do that scott.
See which one gives you enough info to figure out the origins… For example if you enable:
trace://ice/fw/servicecaller
trace://ice/fw/restapi
profile://ice/fw/tableset
You might find out its a REST Call causing it. Try a few.
You say the same query is happening over and over. Does it always reference the same OrderNum?
If so, I’d look into what’s possibly touching/reading that order. I see the tables: JobProd, PartPlant, FSRenewal referenced. Look at things that could need that info.
I know its not as good a method as actually using profiling and tracing, as those could be applied to any other future investigation, but it might get to your problem quicker.
How about turning on change logs for the Customer table, along with some suspect fields, and include one of the “changed on” dates? That should user stamp it, and let you dig more if it’s a PICNIC source.