【问题标题】:What is the reference in "coldfusion.runtime.RWLock" on a stack trace堆栈跟踪上的“coldfusion.runtime.RWLock”中的引用是什么
【发布时间】:2012-06-15 00:37:19
【问题描述】:

在下面的语句中:

java.lang.Object.wait(Object.java:???)[Native Method]
- waiting on <0x6ab0eb48> (a coldfusion.runtime.RWLock)
coldfusion.runtime.RWLock.waitForLock(RWLock.java:154)

“0x6ab0eb48”指的是什么?它是堆上的内存地址吗?它是对堆栈的某种引用吗?是否可以将该引用转换为有用的东西,例如导致阻塞的代码行?

在不同时间发生的同一问题的完整堆栈跟踪。

在 java.lang.Object.wait(Native Method) - 在 Coldfusion.runtime.RWLock.waitForLock(RWLock.java:154) 在 Coldfusion.runtime.RWLock 等待 [0x00000000e0eac670] (acoldfusion.runtime.RWLock) .requestWriteLock(RWLock.java:124) - 在 Coldfusion.runtime.LockManager.requestNamedLock(LockManager.java: 73)在coldfusion.tagext.lang.LockTag.doStartTag(LockTag.java:186)在cfmodules2eJOModule $ $ CD35DE93ADBE111EADECF17DDC3D9E362etransfer173107414 funcSETMODULECONFIGSMEMENTO.runFunction(d:\ JO3 \ jobOffice \配置\转印\定义\ modules.JOModule $ CD35DE93ADBE111EADECF17DDC3D9E36.transfer:193 ) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) 在coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) 在coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) 在coldfusion .runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) 在冷融合。 filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) 在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:463) 在coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:453) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:320) 在coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2222) 在coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag. java:362) 在coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2662) 在coldfusion.runtime 的cfMethodInvoker2ecfc210361352$funcINVOKEMETHOD.runFunction(D:\JO3\jobOffice\transfer\com\dynamic\MethodInvoker.cfc:47)。在 Coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) 在 coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) 在 coldfusion.runtime.UDFMethod$ArgumentCollectionFilter 的 UDFMethod.invoke(UDFMethod.java:418) .invoke(UDFMethod.java:324) 在coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59)在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) 在coldfusion.runtime。 cfTransferPopulator2ecfc918825853$funcPOPULATEONETOMANY.runFunction(D:\JO3\jobOffice\transfer\com\dynamic\TransferPopulator.cfc:113 处的 Coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272) 处的 TemplateProxy.invoke(TemplateProxy.java:308) ) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) 在coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) 在coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) 在coldfusion .runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) 在coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) 在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) 在coldfusion.runtime。 UDFMethod.invoke(UDFMethod.java:192) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy .java:448) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308) 在coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272) 在cfDynamicManager2ecfc127705980$funcPOPULATEONETOMANY.runFunction(D:\JO3\jobOffice\transfer \com\dynamic\DynamicManager.cfc:93) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) 在coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) 在coldfusion.runtime.UDFMethod$ReturnTypeFilter。在coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) 调用(UDFMethod.java:360) 在coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) 在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod .java:277) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308)在coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272) 在cfTransfer2ecfc1432092572$funcLOADONETOMANY.run函数(D:\JO3\jobOffice\transfer\com\Transfer.cfc:770)在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418)在coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47)在Coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) 在coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) 在coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) 在coldfusion .runtime.UDFMethod.runFilterChain(UDFMethod.java:277) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) 在coldfusion.runtime.TemplateProxy。调用(TemplateProxy.java:308)在coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272)在cfmodules2eJOModule $ CD35DE93ADBE111EADECF17DDC3D9E362etransfer173107414 $ funcLOADMODULECONFIGS.runFunction(d:\ JO3 \ jobOffice \设置\传输\定义\ modules.JOModule $ CD35DE93ADBE111EADECF17DDC3D9E36 .transfer:140) 在coldfusion.runtime.UDFMethod.invoke(UDFM ethod.java:418) 在coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) 在coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) 在coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod .java:324) 在coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) 在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192)在coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2471)在cfmodules2eJOModule $ CD35DE93ADBE111EADECF17DDC3D9E362etransfer173107414 $ funcGETMODULECONFIGSSTRUCT.runFunction(d:\ JO3 \ jobOffice \设置\传输\定义\ modules.JOModule $ CD35DE93ADBE111EADECF17DDC3D9E36.transfer:303)在ColdFusion的。 runtime.UDFMethod.invoke(UDFMethod.java:418) 在 coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) 在 coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) 在 coldfusion.runtime.UDFMethod $ArgumentCollectionFilter.invoke(UDFMeth od.java:324) 在coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) 在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192 ) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308) 在coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272) 在cfCPSecurity2ecfc397466374$funcPREPROCESS .runFunction(D:\JO3\jobOffice\sys\jo\core\m2plugin\CPSecurity.cfc:18) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) 在coldfusion.filter.SilentFilter.invoke(SilentFilter. java:47) 在coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) 在coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) 在coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java :59) 在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) 在coldfusion.runtime.UDFMethod.invoke(UDFMet hod.java:192) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308) 在coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272 ) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) 在coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke 的cfPluginManager2ecfc1495337580$funcPREPROCESS.runFunction(D:\JO3\jobOffice\MachII\framework\PluginManager.cfc:405) (UDFMethod.java:360) 在coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) 在coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) 在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod. java:277) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308) 在Coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272) 在 cfRequestHandler2ecfc1676430457$funcPROCESSEVENTS.r unFunction(D:\JO3\jobOffice\MachII\framework\RequestHandler.cfc:275) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) 在coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360 ) 在coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) 在coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) 在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) 在coldfusion .runtime.UDFMethod.invoke(UDFMethod.java:192) 在coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2471) 在cfRequestHandler2ecfc1676430457$funcHANDLEREQUEST.runFunction(D:\JO3\jobOffice\MachII\framework\RequestHandler.cfc: 208) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:418) 在coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) 在coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) ) 在coldfusion.runtime 的coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59)。 UDFMethod.runFilterChain(UDFMethod.java:277) 在 coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) 在 coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) 在 coldfusion.runtime.TemplateProxy.invoke(TemplateProxy .java:308) 在coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2272) 在cfmach2dii2ecfc1440816939$funcHANDLEREQUEST.runFunction(D:\JO3\jobOffice\MachII\mach-ii.cfc:210) 在coldfusion.runtime.UDFMethod .invoke(UDFMethod.java:418) 在coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) 在coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) 在coldfusion.filter.FunctionAccessFilter。在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) 在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) 在coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java) 调用(FunctionAccessFilter.java:59) :2471) 在 cfmach2dii2ecfc1440816939$funcONREQUESTSTART.runFunction(D:\JO3\jobOffice\MachII\mach-ii.cfc:121) 在coldfusio n.runtime.UDFMethod.invoke(UDFMethod.java:418) 在coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) 在coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) 在coldfusion .filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:59) 在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277) 在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) 在coldfusion.runtime.CfJspPage。 _invokeUDF(CfJspPage.java:2471) 在 coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2290) 在 cfApplication2ecfc1530162842$funcONREQUESTSTART.runFunction(D:\JO3\wwwroot\Application.cfc:48) 在coldfusion.runtime.UDFMethod。在coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:324) 在coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:360) 在coldfusion.filter.FunctionAccessFilter.invoke 调用(UDFMethod.java:418) (FunctionAccessFilter.java:59) 在coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:277)在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:192) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:448) 在coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:308) 在coldfusion.runtime。 AppEventInvoker.invoke(AppEventInvoker.java:74) 在coldfusion.runtime.AppEventInvoker.onRequestStart(AppEventInvoker.java:221) 在coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:273) 在coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter .java:40) 在coldfusion.filter.PathFilter.invoke(PathFilter.java:86) 在coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70) 在coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)在coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) 在coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) 在coldfusion.filter.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)。 Coldfusion.filter.Req 处的 DatasourceFilter.invoke(DatasourceFilter.java:22) uestThrottleFilter.invoke(RequestThrottleFilter.java:126) 在 coldfusion.CfmServlet.service(CfmServlet.java:175) 在 coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) 在 jrun.servlet.FilterChain.doFilter(FilterChain.java :86) 在 com.intergral.fusionreactor.filter.FusionReactorFilter.b(FusionReactorFilter.java:386) 在 com.intergral.fusionreactor.filter.FusionReactorFilter.c(FusionReactorFilter.java:264) 在 com.intergral.fusionreactor.filter。 FusionReactorFilter.doFilter(FusionReactorFilter.java:174) 在 jrun.servlet.FilterChain.doFilter(FilterChain.java:94) 在 Coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) 在 Coldfusion.bootstrap.BootstrapFilter.doFilter (BootstrapFilter.java:46) 在 jrun.servlet.FilterChain.doFilter(FilterChain.java:94) 在 jrun.servlet.FilterChain.service(FilterChain.java:101) 在 jrun.servlet.ServletInvoker.invoke(ServletInvoker.java: 106) 在 jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42) 在jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286) 在 jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) 在 jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) 在 jrunx.scheduler .ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320) 在 jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428) 在 jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266) 在 jrunx。 scheduler.WorkerThread.run(WorkerThread.java:66)

【问题讨论】:

  • 这是整个堆栈跟踪吗?如果没有,可以发一下吗?据我所知,该错误似乎与使用命名的cflock 有关。

标签: java coldfusion


【解决方案1】:

十六进制引用确实引用了堆上的对象。如前所述,RWLock 类可能与&lt;cflock&gt; 相关。理想情况下,您需要的是完整的堆栈跟踪。如果您从上面的锁定行向下阅读,您将获得对代码的引用,其中包括冷融合行号,这意味着您可以弄清楚发生了什么。 如果您遇到死锁,该引用可能会出现在完整堆栈转储中的其他位置。要生成和分析其中一个,请参阅这篇文章了解适合我的方法:When ColdFusion is maxing out the CPU, how do I find out what it's chewing/choking on?

【讨论】:

  • 现在在上面发布了完整的堆栈跟踪。违规行位于 TransferORM 生成的方法中。该方法本身是不起眼的。它有一个以类名和实体 PK 命名的 CfLock。它有几个循环,但没有访问任何可能导致问题的外部资源。令我困惑的是,当我看到大约 10 个具有相同堆栈跟踪的线程时,服务器进入一种状态,所有线程都在相同的“地址”上等待,例如,“0x6ab0eb48”这些线程最终完成,这种情况一直发生,直到我们反弹服务。我想看看 0x6ab0eb48 是什么代码。
  • 在我们退回服务之前,同样的问题不断发生(相同的锁,但每隔几分钟不同的“地址”。我已经完成了“每 20 秒捕获一次堆栈跟踪”方法并使用 IBM DTA 看看发生了什么。线程正在移动(即执行),但速度很慢。我使用 ProcExp.exe 查看每个正在运行的线程的 CPU 使用情况,与 IBM TDA 中的堆栈跟踪相关,并且每个一个使用大约 3-5% 的 cpu。
  • 要查看地址中的内容,您应该能够使用 jmap:docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html - 它会将整个堆写入磁盘并在运行时减慢速度,因此请确保您我有空间。然后您可以使用 jhat :docs.oracle.com/javase/6/docs/technotes/tools/share/jhat.html 查看堆转储。您需要大量内存才能运行 JHat(超过堆转储的大小)
  • 我的猜测是 RWLock 内部的某些东西(堆栈跟踪说它正在等待)的范围并不像锁名称所暗示的那样紧密,或者需要很长时间才能释放。您可以临时编辑带有 cflock 的传输生成的代码吗?我会在 上方放置一个 ,它可能会告诉您减速发生时发生了什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 2015-05-14
  • 2011-11-20
  • 2011-09-13
  • 2019-06-30
相关资源
最近更新 更多