[
https://issues.apache.org/jira/browse/HBASE-16142?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15360670#comment-15360670
]
Konstantin Ryakhovskiy commented on HBASE-16142:
------------------------------------------------
quick research on this topic, we can start/stop JFR programmatically using
following code:
{code}
private FlightRecorderClient startJFR(String name) throws IOException,
InstanceNotFoundException, NoSuchRecordingException {
FlightRecorder.registerWithPlatformMBeanServer();
FlightRecorderClient recorderClient = new FlightRecorderClient();
ObjectName recordingObj = recorderClient.createRecording(name);
recorderClient.enableDefaultRecording();
recorderClient.start(recordingObj);
return recorderClient;
}
private void stopAndDumpJFR(FlightRecorderClient recorderClient, ObjectName
recordingObj, String outputPath) throws IOException, NoSuchRecordingException {
recorderClient.stop(recordingObj);
recorderClient.copyTo(recordingObj, outputPath);
}
{code}
is it what we need?
> Trigger JFR session when under duress -- e.g. backed-up request queue count
> -- and dump the recording to log dir
> ----------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-16142
> URL: https://issues.apache.org/jira/browse/HBASE-16142
> Project: HBase
> Issue Type: Task
> Components: Operability
> Reporter: stack
> Priority: Minor
> Labels: beginner
>
> Chatting today w/ a mighty hbase operator on how to figure what is happening
> during transitory latency spike or any other transitory 'weirdness' in a
> server, the idea came up that a java flight recording during a spike would
> include a pretty good picture of what is going on during the time of duress
> (more ideal would be a trace of the explicit slow queries showing call stack
> with timings dumped to a sink for later review; i.e. trigger an htrace when a
> query is slow...).
> Taking a look, programmatically triggering a JFR recording seems doable, if
> awkward (MBean invocations). There is even a means of specifying 'triggers'
> based off any published mbean emission -- e.g. a query queue count threshold
> -- which looks nice. See
> https://community.oracle.com/thread/3676275?start=0&tstart=0 and
> https://docs.oracle.com/javacomponents/jmc-5-4/jfr-runtime-guide/run.htm#JFRUH184
> This feature could start out as a blog post describing how to do it for one
> server. A plugin on Canary that looks at mbean values and if over a
> configured threshold, triggers a recording remotely could be next. Finally
> could integrate a couple of triggers that fire when issue via the trigger
> mechanism.
> Marking as beginner feature.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)