我目前正在准备一个动态AX应用程序的负载测试。我们正在探索在负载测试期间在AOS上启用跟踪的可能性。我担心跟踪可能会影响服务器的性能,从而影响测试结果。
是否有可能在不影响结果的情况下在负载测试期间进行跟踪?
发布于 2016-10-08 08:20:02
诚然,如果您打开AX跟踪(例如,通过编辑Ax32Serv.exe.config或using the WCF tracing),您将在负载下产生性能影响(并最终产生一些巨大的日志)。FH-Inway认为跟踪只会导致4%的开销可能是正确的(取决于负载),但在负载下,真正的问题是打开它们一分钟就会得到几十亿字节的日志。如果您使用Trace Parser方法进行监视,也是如此。
如果您在负载下失败,您还应该能够在失败的请求中找到返回给您的异常消息。
您还可以通过AOS GUI查看AX抛出的所有异常(请参阅GUI中的System--> exceptions项),或者可以使用以下查询直接查询AX的异常表:
SELECT COUNT(*) AS theCount ,EXCEPTION ,theDESCRIPTION
FROM (
SELECT SE.CREATEDDATETIME ,SE.EXCEPTION ,SUBSTRING(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(max), SE.DESCRIPTION), CHAR(13), ' '), CHAR(10), ' '), CHAR(9), ' '), (CHAR(13) + CHAR(10)), ' '), CHAR(32), ' '), 1, 250) AS theDESCRIPTION
FROM SYSEXCEPTIONTABLE SE
LEFT JOIN AIFEXCEPTIONMAP T2 ON (SE.RECID = T2.EXCEPTIONID)
LEFT JOIN PARTITIONS T3 ON (SE.DATAPARTITION = T3.RECID)
WHERE SE.CREATEDDATETIME > '2015-12-15 02:25:50' ) AS InnerS
--where theDESCRIPTION like '%deadlock%'
GROUP BY Exception ,theDESCRIPTION
ORDER BY theCount DESC通过使用基于SQL Server的Performance Analyzer for Dynamics AX,您可以将问题隔离到AX中的SQL层或AOS层。DynPerf几乎没有性能影响。
如果您负载过重,我的建议是从Perf Analyzer (DynPerf)开始,或者使用SQL Server自己的DMV来了解哪些查询执行得很差,然后找到与查询相关的特定用户操作。
最后,AX Perfmon计数器可以为您提供有关正在发生的情况的一些信息。
TechNet文章"Tools for monitoring performance AX 2012“中列出了用于监视AX的不同选项。正如您所看到的,AX中有过多的监控选项。就像在其他系统中一样。
如果出现许多异常,请隔离运行负载测试中的每个方案,直到找到引发异常的测试和数据为止。
负载测试是一种很好的方法,可以用来确定如何监控和解决生产环境中的问题。如果你不能在负载测试中做到这一点,那么当真正的用户遇到问题时,你该怎么做呢?
你没有说你是如何加载他们的系统。你要通过AIF吗?您也没有说明您想要进行跟踪的原因。它仅仅是为了监控响应时间吗?如果您正在使用Visual Studio加载工具,并且已经用Begin和End.Timer()方法正确地包装了请求,那么加载工具将为您收集响应时间。
发布于 2016-10-05 23:36:24
“是否有可能在不影响结果的情况下在负载测试期间进行跟踪?”
不怎么有意思。如果没有对性能产生影响,则跟踪将始终处于打开状态。仅仅是跟踪的行为就会导致额外的工作,所以它一定会影响结果。
如果您正在对具有相同负载测试的基线系统进行性能测试,则可以在两个环境中打开跟踪,从而在某种程度上使这两个环境的性能无效。
https://stackoverflow.com/questions/39869914
复制相似问题