yjp在jboss上的on-demand attach

根据http://www.yourkit.com/docs/10/help/attach_agent.jsp,yjp可以on-demand式的attach上本机任何一个运行的jvm进行分析——即使这个jvm启动时没有加上和yjp任何有关的参数。

 

这点很强大,也基本上很有用,特别对于生产环境的中间件运行时。但当我把yjp attach到运行的jboss 5时,jboss汇报了如下的错误,虽然貌似不影响profiling,终归不爽

 

23:12:44,877 ERROR [ContainerBase] Exception invoking periodic operation: 
java.lang.NoClassDefFoundError: com/yourkit/runtime/Callback
	at org.apache.jasper.servlet.JspServlet.periodicEvent(JspServlet.java)
	at org.apache.catalina.core.StandardWrapper.backgroundProcess(StandardWrapper.java:639)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1612)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1621)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1621)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1621)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1601)
	at java.lang.Thread.run(Thread.java:662)

 于是,依照jboss的类加载机制,我发现这个workaround是可行的:

1. 在attach yjp前将yjp.jar拷贝到$JBOSS_HOME/server/$PROFILE/deploy下

2. 在yjp的GUI上attach

 

当然,runtime时的on-demand attach是有很多使用限制的,可以参考http://www.yourkit.com/docs/10/help/attach_agent.jsp的描述,比较致命的是,它有将jvm搞死的风险呢。

你可能感兴趣的:(jboss)