You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by se...@apache.org on 2015/07/08 20:31:15 UTC
[8/9] flink git commit: [FLINK-2327] [runtime] Log the limit of open
file handles at TaskManager startup
[FLINK-2327] [runtime] Log the limit of open file handles at TaskManager startup
Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/706c391b
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/706c391b
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/706c391b
Branch: refs/heads/master
Commit: 706c391b11ac6fc8c1487cbe43b20b5510c7a459
Parents: 535475c
Author: Stephan Ewen <se...@apache.org>
Authored: Wed Jul 8 15:47:45 2015 +0200
Committer: Stephan Ewen <se...@apache.org>
Committed: Wed Jul 8 20:28:40 2015 +0200
----------------------------------------------------------------------
.../runtime/util/EnvironmentInformation.java | 29 ++++++++++++++++++++
.../flink/runtime/taskmanager/TaskManager.scala | 7 +++++
.../util/EnvironmentInformationTest.java | 1 +
3 files changed, 37 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flink/blob/706c391b/flink-runtime/src/main/java/org/apache/flink/runtime/util/EnvironmentInformation.java
----------------------------------------------------------------------
diff --git a/flink-runtime/src/main/java/org/apache/flink/runtime/util/EnvironmentInformation.java b/flink-runtime/src/main/java/org/apache/flink/runtime/util/EnvironmentInformation.java
index 4efdf11..630e227 100644
--- a/flink-runtime/src/main/java/org/apache/flink/runtime/util/EnvironmentInformation.java
+++ b/flink-runtime/src/main/java/org/apache/flink/runtime/util/EnvironmentInformation.java
@@ -21,6 +21,7 @@ package org.apache.flink.runtime.util;
import java.io.InputStream;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
+import java.lang.reflect.Method;
import java.util.List;
import java.util.Properties;
@@ -202,6 +203,34 @@ public class EnvironmentInformation {
}
/**
+ * Tries to retrieve the maximum number of open file handles. This method will only work on
+ * UNIX-based operating systems with Sun/Oracle Java versions.
+ *
+ * <p>If the number of max open file handles cannot be determined, this method returns {@code -1}.</p>
+ *
+ * @return The limit of open file handles, or {@code -1}, if the limit could not be determined.
+ */
+ public static long getOpenFileHandlesLimit() {
+ Class<?> sunBeanClass;
+ try {
+ sunBeanClass = Class.forName("com.sun.management.UnixOperatingSystemMXBean");
+ }
+ catch (ClassNotFoundException e) {
+ return -1L;
+ }
+
+ try {
+ Method fhLimitMethod = sunBeanClass.getMethod("getMaxFileDescriptorCount");
+ Object result = fhLimitMethod.invoke(ManagementFactory.getOperatingSystemMXBean());
+ return (Long) result;
+ }
+ catch (Throwable t) {
+ LOG.warn("Unexpected error when accessing file handle limit", t);
+ return -1L;
+ }
+ }
+
+ /**
* Logs a information about the environment, like code revision, current user, java version,
* and JVM parameters.
*
http://git-wip-us.apache.org/repos/asf/flink/blob/706c391b/flink-runtime/src/main/scala/org/apache/flink/runtime/taskmanager/TaskManager.scala
----------------------------------------------------------------------
diff --git a/flink-runtime/src/main/scala/org/apache/flink/runtime/taskmanager/TaskManager.scala b/flink-runtime/src/main/scala/org/apache/flink/runtime/taskmanager/TaskManager.scala
index 4f95c1c..9bdf1a8 100644
--- a/flink-runtime/src/main/scala/org/apache/flink/runtime/taskmanager/TaskManager.scala
+++ b/flink-runtime/src/main/scala/org/apache/flink/runtime/taskmanager/TaskManager.scala
@@ -1032,6 +1032,13 @@ object TaskManager {
EnvironmentInformation.logEnvironmentInfo(LOG.logger, "TaskManager", args)
EnvironmentInformation.checkJavaVersion()
+ val maxOpenFileHandles = EnvironmentInformation.getOpenFileHandlesLimit()
+ if (maxOpenFileHandles == -1) {
+ LOG.info(s"Maximum number of open file descriptors is $maxOpenFileHandles")
+ } else {
+ LOG.info("Cannot determine the maximum number of open file descriptors")
+ }
+
// try to parse the command line arguments
val (configuration: Configuration,
mode: StreamingMode) = try {
http://git-wip-us.apache.org/repos/asf/flink/blob/706c391b/flink-runtime/src/test/java/org/apache/flink/runtime/util/EnvironmentInformationTest.java
----------------------------------------------------------------------
diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/util/EnvironmentInformationTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/util/EnvironmentInformationTest.java
index 764cb57..771c57c 100644
--- a/flink-runtime/src/test/java/org/apache/flink/runtime/util/EnvironmentInformationTest.java
+++ b/flink-runtime/src/test/java/org/apache/flink/runtime/util/EnvironmentInformationTest.java
@@ -56,6 +56,7 @@ public class EnvironmentInformationTest {
assertNotNull(EnvironmentInformation.getRevisionInformation());
assertNotNull(EnvironmentInformation.getVersion());
assertNotNull(EnvironmentInformation.getUserRunning());
+ assertTrue(EnvironmentInformation.getOpenFileHandlesLimit() >= -1);
}
catch (Exception e) {
e.printStackTrace();