[ https://issues.apache.org/jira/browse/FLINK-4087?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15344226#comment-15344226 ]
ASF GitHub Bot commented on FLINK-4087: --------------------------------------- Github user tillrohrmann commented on a diff in the pull request: https://github.com/apache/flink/pull/2145#discussion_r68043573 --- Diff: flink-core/src/main/java/org/apache/flink/metrics/reporter/JMXReporter.java --- @@ -73,10 +86,61 @@ public JMXReporter() { // ------------------------------------------------------------------------ @Override - public void open(Configuration config) {} + public void open(Configuration config) { + this.jmxServer = startJmxServer(config); + } + + private static JMXServer startJmxServer(Configuration config) { + JMXServer jmxServer; + + String portRange = config.getString(KEY_METRICS_JMX_PORT, "9010-9025"); + String[] ports = portRange.split("-"); + + if (ports.length == 0 || ports.length > 2) { + throw new IllegalArgumentException("JMX port range was configured incorrectly. " + + "Expected: <startPort>[-<endPort>] Configured: " + portRange); + } + + if (ports.length == 1) { //single port was configured --- End diff -- Have you checked out `NetUtils.getPortRangeFromString` to iterate over a range of ports? This returns an `Iterator` over all defined ports. With that you can also define port ranges like: `1911, 2222-3333, 42-1337`. > JMXReporter can't handle port conflicts > --------------------------------------- > > Key: FLINK-4087 > URL: https://issues.apache.org/jira/browse/FLINK-4087 > Project: Flink > Issue Type: Improvement > Components: Metrics > Affects Versions: 1.1.0 > Reporter: Chesnay Schepler > Assignee: Chesnay Schepler > Priority: Blocker > Fix For: 1.1.0 > > > The JMXReporter is currently configured to use a single port that is set as a > JVM argument. > This approach has a few disadvantages: > If multiple TaskManagers run on the same machine only 1 can expose metrics. > This issue is compounded by the upcoming JobManager metrics, which would then > prevent TM metrics from being exposed in local setups. > Currently, we prevent other TM's from exposing metrics by checking the the > start-daemon-sh whether a TM is already running, and if so clear the > arguments. This isn't a particular safe way to do it, and this script is not > used when deploying on yarn, leading to TM failures since the JVM can't > allocate the JMX port. > We should find a way to specifiy port-ranges for JMX and log the final port > used. -- This message was sent by Atlassian JIRA (v6.3.4#6332)