2016-07-19 2 views
0

JMC에서 내 서버 프로그램에서 문제 메서드를 찾으려고합니다. Windows에서 로컬로 서버를 실행하고 JMC에서 Flight Recorder를 시작하면 정상적으로 작동합니다. JMC가 올바르게 Code 탭에 데이터를 표시합니다 : Hot Methods, Call Tree 등 그러나 원격 플랫폼 (Linux)에서 서버를 프로파일하려고하면 빈 창이 나타납니다. JMC에서 최신 메소드 및 패키지를 표시하지 않습니다.

/opt/java/java8/bin/jcmd 38390 VM.unlock_commercial_features 
/opt/java/java8/bin/jcmd 38390 JFR.start duration=10m compress=true filename=dxstress3_cross_try1.jfr settings=/opt/dxstress/settings_for_jmc.jfc 

내가 오라클 JDK 8u40 설정 내가 JMC에서 내 보낸 settings_for_jmc.jfc 파일 사용 내가 이것을 사용 플랫폼에서 JFR를 시작합니다. 그것은 execution_sample 설정

<event path="vm/prof/execution_sample"> 
    <setting name="enabled">true</setting> 
    <setting name="period">10 ms</setting> 
</event> 

Empty hot methods window

이러한 데이터를 기록하거나하지 않도록 옵션은 거기에 포함되어 있습니다? 내가 놓친 게 무엇입니까?

답변

0

사용자 지정 설정 파일을 지정하지 않으면 작동합니까?

만약 그렇다면 .jfc 파일에서 문제가 발생할 가능성이 큽니다. 그것은 그렇지 않은 경우는 버그가 될 수

<event path="vm/prof/execution_sample"> 
    <setting name="enabled" control="method-sampling-enabled">true</setting> 
    <setting name="period" control="method-sampling-interval">10 ms</setting> 
</event> 

JDK 7/8에 다음과 같이한다. Linux에서 CLOCK_REALTIME을 사용하지 않는 세마포어에 문제가있어 샘플 수를 대폭 줄일 수있었습니다. 그것은 7u80과 8u25에서 수정되었습니다.

는 현재 사용 이벤트 설정을 할 인쇄하려면 : VM/교수/execution_sample을 사용하는 경우

jcmd <pid> JFR.check verbose=true 

이 문제가 JVM과 샘플러에있다. 그렇지 않으면 구성에서 가장 가능성이 높습니다.

샘플링 된 메서드가 Java 코드를 실행하는 경우에만 샘플러에서 이벤트가 생성되므로 응용 프로그램이 네이티브로 회전하는 경우 샘플이 없습니다.

관련 문제