From e9b0829860614c07ec5397e7af1902d9c526aebc Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Fri, 9 Oct 2020 19:39:12 -0400 Subject: [PATCH] Report the maximum number of file descriptors allowed by the OS. --- .../textsecuregcm/WhisperServerService.java | 2 ++ .../metrics/MaxFileDescriptorGauge.java | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 service/src/main/java/org/whispersystems/textsecuregcm/metrics/MaxFileDescriptorGauge.java diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index 62cc389da..158a35af7 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -89,6 +89,7 @@ import org.whispersystems.textsecuregcm.metrics.FileDescriptorGauge; import org.whispersystems.textsecuregcm.metrics.FreeMemoryGauge; import org.whispersystems.textsecuregcm.metrics.GarbageCollectionCountGauge; import org.whispersystems.textsecuregcm.metrics.GarbageCollectionTimeGauge; +import org.whispersystems.textsecuregcm.metrics.MaxFileDescriptorGauge; import org.whispersystems.textsecuregcm.metrics.MetricsApplicationEventListener; import org.whispersystems.textsecuregcm.metrics.NetworkReceivedGauge; import org.whispersystems.textsecuregcm.metrics.NetworkSentGauge; @@ -451,6 +452,7 @@ public class WhisperServerService extends Application webSocketEnvironment, WebSocketEnvironment provisioningEnvironment) { diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MaxFileDescriptorGauge.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MaxFileDescriptorGauge.java new file mode 100644 index 000000000..39b05fbdd --- /dev/null +++ b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MaxFileDescriptorGauge.java @@ -0,0 +1,23 @@ +package org.whispersystems.textsecuregcm.metrics; + +import com.codahale.metrics.Gauge; +import com.sun.management.UnixOperatingSystemMXBean; + +import java.lang.management.ManagementFactory; + +/** + * A gauge that reports the maximum number of file descriptors allowed by the operating system. + */ +public class MaxFileDescriptorGauge implements Gauge { + + private final UnixOperatingSystemMXBean unixOperatingSystemMXBean; + + public MaxFileDescriptorGauge() { + this.unixOperatingSystemMXBean = (UnixOperatingSystemMXBean)ManagementFactory.getOperatingSystemMXBean(); + } + + @Override + public Long getValue() { + return unixOperatingSystemMXBean.getMaxFileDescriptorCount(); + } +}