2012-06-15 6 views
1

의 "coldfusion.runtime.RWLock"의 기준은 무엇인가? 힙의 메모리 주소입니까? 스택에 대한 일종의 참조입니까? 이 참조를 블로킹의 원인이되는 코드 줄처럼 유용하게 사용할 수 있습니까?스택 추적 다음 문장에서

다른 시간에 발생한 동일한 문제의 전체 스택 추적.

java.lang.Object.wait를에서 (기본 방법) - coldfusion.runtime에서 coldfusion.runtime.RWLock.waitForLock (RWLock.java:154)에서 [0x00000000e0eac670 (A coldfusion.runtime.RWLock)에서 대기. RWLock.requestWriteLock (RWLock.java:124) - 옥내 [0x00000000e0eac670] coldfusion.runtime.LockManager.requestNamedLock에서 coldfusion.runtime.RWLock.requestLock (RWLock.java:46)에서 (a coldfusion.runtime.RWLock) (LockManager.java : 73) cfmodules2eJOModule $ CD35DE93ADBE111EADECF17DDC3D9E362etransfer173107414 $ funcSETMODULECONFIGSMEMENTO.runFunction에서 coldfusion.tagext.lang.LockTag.doStartTag (LockTag.java:186()에서 D : \ JO3 \ jobOffice \ 설정 \ 전달 \ 정의 \ modules.JOModule $ CD35DE93ADBE111EADECF17DDC3D9E36.transfer : 193) at coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:418) at coldfusion.filter.SilentFilter.invoke (SilentFilter.java:47) at coldfusion.runtime.UDFMethod $ ReturnTypeFilter.invoke coldfusion.runtime.UDFMethod.runFilterChain에서 coldfusion.filter.FunctionAccessFilter.invoke (FunctionAccessFilter.java:59)에서 coldfusion.runtime.UDFMethod $ ArgumentCollectionFilter.invoke (UDFMethod.java:324)에서 (UDFMethod.java:360) (UDFMethod. java : 277) at coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:463) at coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:453) at coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:320) at coldfusion.runtime.CfJspPage._invoke (CfJspPage.java:2222) at coldfusion.tagext.lang.InvokeTag.doEndTag (InvokeTag.java:362) at coldfusion.runtime.CfJspPage._emptyTcfTag (CfJspPage.java:2662) at cfMethodInvoker2ecfc210361352 $ funcINVOKEMETHOD coldfusion.filter.SilentFilter.invoke (silentFilter.java : UDFMethod.java:418)에서 coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:418)의 .runFunction (D : \ JO3 \ jobOffice \ transfer \ com \ dynamic \ MethodInvoker.cfc : 47) 47) at coldfusion.runtime.UDFMethod $ ReturnTypeFilter.invoke (UDFMethod.java:360) at coldfusion.runtime.UDFMethod $ ArgumentColl coldfusion.runtime.UDFMethod.invoke (UDFMethod.java : 324) at coldfusion.filter.FunctionAccessFilter.invoke (FunctionAccessFilter.java:59) at coldfusion.runtime.UDFMethod.runFilterChain (UDFMethod.java:277) at coldfusion.runtime.UDFMethod.invoke (UDFMethod 된 .java : 192)에 coldfusion.runtime.CfJspPage._invoke coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:308)에서 coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:448) (CfJspPage.java:2272 AT) coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:418) at cffransransPopulator2ecfc918825853 $ funcPOPULATEONETOMANY.runFunction (D : \ JO3 \ jobOffice \ transfer \ com \ dynamic \ TransferPopulator.cfc : 113) coldfusion.filter.SilentFilter.invoke (ColdFusion.runtime.UDFMethod $ ReturnTypeFilter.invoke (UDFMethod.java:360) at coldfusion.runtime.UDFMethod $ ArgumentCollectionFilter.invoke (UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke (FunctionAccessFilter .java : 59) at coldfusion.runtime.UDFMethod.runFilterChain (UDFMethod.java:2) 77)에서 ColdFusion에서 coldfusion.runtime.TemplateProxy.invoke에서 coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:448)에서 coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:192) (TemplateProxy.java:308)에서. cfDynamicManager2ecfc127705980 $ funcPOPULATEONETOMANY.runFunction에서 runtime.CfJspPage._invoke (CfJspPage.java:2272) (D : \ JO3 \ jobOffice \ 전송 \ COM 동적 \의 DynamicManager.cfc \ 93)에 coldfusion.runtime.UDFMethod.invoke (UDFMethod.java : coldfusion.runtime.UDFMethod $ ArgumentCollectionFilter.invoke에서 coldfusion.runtime.UDFMethod $ ReturnTypeFilter.invoke (UDFMethod.java:360)에서 coldfusion.filter.SilentFilter.invoke (SilentFilter.java:47) (UDFMethod.java에서 418) ColdFusion에서의 coldfusion.runtime.UDFMethod.invoke에서 coldfusion.runtime.UDFMethod.runFilterChain (UDFMethod.java:277)에서 coldfusion.filter.FunctionAccessFilter.invoke (FunctionAccessFilter.java:59) (UDFMethod.java:192)의 324). runtime.TemplateProxy.invoke (TemplateProxy.java:448) at coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.ja) ColdFusion.runtime.CfJspPage._invoke (CfJspPage.java:2272)에서 cfTransfer2ecfc1432092572 $ funcLOADONETOMANY.runFunction (D : \ JO3 \ jobOffice \ transfer \ com \ Transfer.CFC : 770) coldfusion.runtime.UDFMethod $ ReturnTypeFilter.invoke에서 coldfusion.filter.SilentFilter.invoke (SilentFilter.java:47)에서 coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:418) (UDFMethod.java:360에서) coldfusion.uruntime.UDFMethod $ ArgumentCollectionFilter.invoke (UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke (FunctionAccessFilter.java:59) at coldfusion.runtime.UDFMethod.runFilterChain (UDFMethod.java:277) at coldfusion coldfusion.runtime.CfJspPage에서 coldfusion.runtime.TemplateProxy.invoke에서 coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:448) (TemplateProxy.java:308)에서 .runtime.UDFMethod.invoke (UDFMethod.java:192). cfmodules2eJOModule $ CD35DE93ADBE111EADECF17DDC3D9E362etransfer173107414 $ funcLOADMODULECONFIGS.runFunction에서 _invoke (CfJspPage.java:2272) (D : \ JO3 \ jobOffice \ 구성 \ 전송 \ 정의 \ modules.JOModule $ CD35DE93ADBE111EADECF17DDC3D9E36.transfer 140)에서 coldfusion.runtime.UDFMethod.invoke (UDFMethod .java : 418) at coldfusion.filter.SilentFilte coldfusion.filter.FunctionAccessFilter에서 coldfusion.runtime.UDFMethod $ ArgumentCollectionFilter.invoke (UDFMethod.java:324)에서 r.invoke coldfusion.runtime.UDFMethod $ ReturnTypeFilter.invoke (UDFMethod.java:360)에서 (SilentFilter.java:47) .invoke (FunctionAccessFilter.java:59) coldfusion.runtime.UDFMethod.runFilterChain (UDFMethod.java:277) at coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:192) at coldfusion.runtime.CfJspPage._invokeUDF (CfJspPage. 자바 : 2,471) cfmodules2eJOModule $ CD35DE93ADBE111EADECF17DDC3D9E362etransfer173107414 $ funcGETMODULECONFIGSSTRUCT.runFunction (D에 \ JO3 \ jobOffice \ 구성 \ 전송 \ 정의 \ modules.JOModule $ CD35DE93ADBE111EADECF17DDC3D9E36.transfer : coldfusion.runtime.UDFMethod.invoke에서 303) (UDFMethod.java:418) coldfusion.runtime.UDFMethod $ ArgumentCollectionFilter.invoke에서 coldfusion.runtime.UDFMethod $ ReturnTypeFilter.invoke (UDFMethod.java:360)에서 coldfusion.filter.SilentFilter.invoke (SilentFilter.java:47)에서 (UDFMethod.java:324) coldfusion.filter.FunctionAccess에서 coldfusion.runtime.TemplateProxy.invoke에서 coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:192)에서 coldfusion.runtime.UDFMethod.runFilterChain (UDFMethod.java:277)에서 Filter.invoke (FunctionAccessFilter.java:59) (TemplateProxy 된 .java : 448) cfCPSecurity2ecfc397466374 $ funcPREPROCESS.runFunction에서 coldfusion.runtime.CfJspPage._invoke (CfJspPage.java:2272에서 coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:308)()에서 D : \ JO3 \ jobOffice \ SYS \ 조의 \ 코어 \ m2plugin \ CPSecurity.cfc : 18) coldfusion.runtime.UDFMethod $에서 coldfusion.filter.SilentFilter.invoke (SilentFilter.java:47)에서 coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:418)에서 coldfusion.runtime.UDFMethod $ ArgumentCollectionFilter.invoke (UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke (FunctionAccessFilter.java:59) at coldfusion.runtime.UDFMethod.runFilterChain coldfusion.runtime.TemplateProx에서 coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:192)에서 (UDFMethod.java:277) cfPluginManager2ecfc1495337580 $ funcPREPROCESS.runFunction (에서 coldfusion.runtime.CfJspPage._invoke (CfJspPage.java:2272)에서 coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:308)에서 y.invoke (TemplateProxy.java:448) D : \ JO3 \ jobOffice \ MachII \ 프레임 워크 \ PluginManager.cfc : coldfusion.runtime에서 coldfusion.runtime.UDFMethod $ ReturnTypeFilter.invoke (UDFMethod.java:360)에서 coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:418)에서 405) coldfusion.runtime.UDFMethod에서 coldfusion.runtime.UDFMethod.runFilterChain에서 coldfusion.filter.FunctionAccessFilter.invoke (FunctionAccessFilter.java:59)에서 .UDFMethod $ ArgumentCollectionFilter.invoke (UDFMethod.java:324) (UDFMethod.java:277). coldfusion.runtime.CfJspPage._invoke에서 coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:308)에서 coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:448) (CfJspPage.java에서 (UDFMethod.java:192)를 호출 : 2272) cfRequestHandler2ecfc1676430457 $ funcPROCESSEVENTS.runFunction (D에서 : \ JO3 \ jobOffice \ MachII \ 프레임 워크 \의 필수 ColdFusion.runtime.UDFMethod $ ArgumentCollectionFilter.invoke (UDFMethod.java:418)에서 coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:418)에서 ColdFusion.runtime.UDFMethod $ ReturnTypeFilter.invoke (UDFMethod.java : ColdFusion.runtime.UDFMethod.invoke (UDFMethod.java:192)에서 coldfusion.filter.FunctionAccessFilter.invoke (FunctionAccessFilter.java:59) at coldfusion.runtime.UDFMethod.runFilterChain (UDFMethod.java:277) coldfusion.runtime.UDFMethod.invoke (UDFMethod.)에서 cfRequestHandler2ecfc1676430457 $ funcHANDLEREQUEST.runFunction (D : \ JO3 \ jobOffice \ MachII \ framework \ RequestHandler.cfc : 208)의 coldfusion.runtime.CfJspPage._invokeUDF (CfJspPage.java:2471) java : 418) coldfusion.runtime.UDFMethod $ ReturnTypeFilter.invoke (UDFMethod.java:360) coldfusion.runtime.UDFMethod $ ArgumentCollectionFilter.invoke (UDFMethod.java:324) at coldfusion.filterAccessFilter.invoke (FunctionAccessFilter.java : 59) at coldfusion.runtime.UDFMethod.runFilterChain (UDFMethod.자바 : 277) coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:448)에서 coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:192)에서 coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:308에서)에서 coldfusion.runtime.UDFMethod.invoke (cfmach2dii2ecfc1440816939 $ funcHANDLEREQUEST.runFunction (D : \ JO3 \ jobOffice \ MachII \ mach-ii.cfc : 210)의 coldfusion.runtime.CfJspPage._invoke (CfJspPage.java:2272) (UDFMethod.java ColdFusion.runtime.UDFMethod $ ArgumentCollectionFilter.invoke (UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke (FunctionAccessFilter.java : 418) ColdFusion.runtime.UDFMethod $ ReturnTypeFilter.invoke (UDFMethod.java:360) 59) coldfusion.runtime.UDFMethod.runFilterChain (UDFMethod.java:277) at coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:192) at coldfusion.runtime.CfJspPage._invokeUDF (CfJspPage.java:2471) at cfmach2dii2ecfc1440816939 $ funcONREQUESTSTART.runFunction (D : \ JO3 \ jobOffice \ MachII \ mach-ii.cfc : 121) at coldfusion.runtime.UDFMethod.invoke (UDFMetho ColdFusion.runtime.UDFMethod $ ReturnTypeFilter.invoke (UDFMethod.java:360) at coldfusion.runtime.UDFMethod $ ArgumentCollectionFilter.invoke (UDFMethod.java:324) at coldfusion.filter.FunctionAccessFilter.invoke (FunctionAccessFilter 된 .java 59)에 coldfusion.runtime.CfJspPage._invokeUDF coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:192)에서 coldfusion.runtime.UDFMethod.runFilterChain (UDFMethod.java:277) (CfJspPage.java:2471 AT) coldfusion.runtime.UDFMethod.invoke (UDFMethod.java:418)에서 cfApplication2ecfc1530162842 $ funcONREQUESTSTART.runFunction (D : \ JO3 \ wwwroot \ Application.cfc : 48)의 coldfusion.runtime.CfJspPage._invoke (CfJspPage.java:2290) coldfusion.filter.FunctionAccessFilter.invoke (FunctionAccessFilter.java:59)에서 coldfusion.runtime.UDFMethod $ ArgumentCollectionFilter.invoke (UDFMethod.java:324)에서 coldfusion.runtime.UDFMethod $ ReturnTypeFilter.invoke (UDFMethod.java:360)에서의 coldfusion.runtime.UDFMethod.runFilterChain (UDFMethod.java:277) at coldfusion.runtime.UDFMethod.inv coldfusion.runtime.AppEventInvoker.invoke에서 coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:308)에서 coldfusion.runtime.TemplateProxy.invoke (TemplateProxy.java:448)에두면 (UDFMethod.java:192) (AppEventInvoker.java 기능 : ColdFusion에서 coldfusion.filter.MonitoringFilter.invoke에서 coldfusion.filter.ApplicationFilter.invoke (ApplicationFilter.java:273)에서 coldfusion.runtime.AppEventInvoker.onRequestStart (AppEventInvoker.java:221) (MonitoringFilter.java:40)에 74) coldfusion.filter.BrowserFilter에서 coldfusion.filter.ClientScopePersistenceFilter.invoke (ClientScopePersistenceFilter.java:28)에서 .filter.PathFilter.invoke coldfusion.filter.ExceptionFilter.invoke에서 (PathFilter.java:86) (ExceptionFilter.java:70). coldfusion.filter.DatasourceFilter.invoke에서 coldfusion.filter.GlobalsFilter.invoke (GlobalsFilter.java:38)에서 coldfusion.filter.NoCacheFilter.invoke (NoCacheFilter.java:46) (DatasourceFilter.java에서 (BrowserFilter.java:38)를 호출 : 22) at coldfusion.filter.RequestThrottleFilter.invoke (RequestTh jrun.servlet.FilterChain.doFilter (FilterChain.java:86에서 coldfusion.bootstrap.BootstrapServlet.service에서 coldfusion.CfmServlet.service (CfmServlet.java:175) (BootstrapServlet.java:89)에서 rottleFilter.java:126))에서 com.intergral.fusionreactor.filter.FusionReactorFilter.b (FusionReactorFilter.java:386) com.intergral.fusionreactor.filter.FusionReactorFilter.c (FusionReactorFilter.java:264) com.intergral.fusionreactor.filter.FusionReactorFilter.doFilter (coldfusion.bootstrap.BootstrapFilter.doFilter에서 coldfusion.monitor.event.MonitoringServletFilter.doFilter (MonitoringServletFilter.java:42)에서 jrun.servlet.FilterChain.doFilter (FilterChain.java:94)에서 FusionReactorFilter.java:174) (BootstrapFilter.java :의 JRun에서 jrun.servlet.ServletInvoker.invoke에서 jrun.servlet.FilterChain.service (FilterChain.java:101)에서 jrun.servlet.FilterChain.doFilter (FilterChain.java:94) (ServletInvoker.java:106)에 46) .servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.java:42) at jrun.servlet.JRunRequestDispatcher. jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable에서 jrun.servlet.jrpp.JRunProxyService.invokeRunnable (JRunProxyService.java:203)에서 jrun.servlet.ServletEngineService.dispatch (ServletEngineService.java:543)에서 (JRunRequestDispatcher.java:286)를 호출 jrunx.scheduler.WorkerThread.run에서 jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266)에서 jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428)에서 (ThreadPool.java:320) (WorkerThread.java:66)

+0

전체 스택 추적입니까? 그렇지 않다면 게시 할 수 있습니까? 찾을 수있는 것부터는 오류가 이름이 지정된 'cflock'을 사용하는 것과 관련이있는 것으로 보입니다. –

답변

3

헥스 참조 힙에 객체 참조 않는다. RWLock 클래스는 위에서 언급 한 것처럼 <cflock>과 관련이 있습니다. 이상적인 스택 추적이 필요합니다. 위의 잠금 줄에서 읽으면 coldfusion 행 번호가 포함 된 코드에 대한 참조를 얻게됩니다. 즉, 무슨 일이 일어나고 있는지 확인할 수 있습니다. 교착 상태가 발생하면 해당 참조가 전체 스택 덤프의 다른 위치에 나타날 수 있습니다. 그 중 하나를 생성하고 분석하려면이 게시물을 참조하십시오 : When ColdFusion is maxing out the CPU, how do I find out what it's chewing/choking on?

+0

전체 스택 추적이 이제 위에 게시되었습니다. 위반 라인은 TransferORM 생성 메소드에 있습니다. 방법 자체는 눈에 띄지 않습니다. 클래스 이름과 엔터티의 PK로 이름이 지정된 CfLock이 있습니다. 두 개의 루프가 있지만 문제를 일으킬 수있는 외부 리소스에 액세스하지 않습니다. 저를 혼란스럽게하는 것은 같은 스택 추적을 가진 약 10 개의 스레드를 볼 때 서버가 상태가되는 것입니다. 예를 들어, "0x6ab0eb48"과 같이이 스레드가 결국 완료 될 때까지 계속 대기합니다. 서비스를 반송하십시오. 0x6ab0eb48 코드가 무엇인지보고 싶습니다. – Dave

+0

우리가 서비스를 바운스 할 때까지 동일한 문제가 계속 발생합니다 (동일한 잠금이지만 몇 분마다 서로 다른 "주소"). "20 초마다 스택 추적을 수행했습니다"방법을 사용하고 IBM DTA를 사용하여 어떤 일이 발생하는지 확인합니다. 스레드는 이동 (예 : 실행) 중이지만 느리게 실행됩니다. ProcExp.exe를 사용하여 실행중인 각 스레드의 CPU 사용량을 보았습니다. IBM TDA의 스택 트레이스와 상관 관계가 있으며, 각 스레드는 3-5 % cpu. – Dave

+0

주소에 살고있는 것을 보려면 jmap을 사용해야합니다. http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html - 쓸 것입니다. 전체 힙 (heap)을 디스크에 저장하고 실행 속도를 늦추어 공간을 확보하십시오. 그러면 jhat을 사용할 수 있습니다 : http://docs.oracle.com/javase/6/docs/technotes/tools/share/ jhat.html에서 힙 덤프를 검토하십시오. JHat (힙 덤프의 크기보다 큼)를 실행하려면 충분한 메모리가 필요합니다. – barnyr