You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2016/11/30 13:25:40 UTC
[2/2] lucene-solr:feature/metrics: SOLR-9805: Use metrics-jvm library
to instrument jvm internals such as GC, memory usage and others
SOLR-9805: Use metrics-jvm library to instrument jvm internals such as GC, memory usage and others
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/8601477a
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/8601477a
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/8601477a
Branch: refs/heads/feature/metrics
Commit: 8601477a65ba9141a39389341230b273a69fcecc
Parents: 1e1ae1f
Author: Shalin Shekhar Mangar <sh...@apache.org>
Authored: Wed Nov 30 18:55:25 2016 +0530
Committer: Shalin Shekhar Mangar <sh...@apache.org>
Committed: Wed Nov 30 18:55:25 2016 +0530
----------------------------------------------------------------------
lucene/ivy-versions.properties | 1 +
solr/CHANGES.txt | 2 ++
.../apache/solr/servlet/SolrDispatchFilter.java | 22 ++++++++++++++++++++
solr/server/ivy.xml | 1 +
4 files changed, 26 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8601477a/lucene/ivy-versions.properties
----------------------------------------------------------------------
diff --git a/lucene/ivy-versions.properties b/lucene/ivy-versions.properties
index 1f3953d..387c12e 100644
--- a/lucene/ivy-versions.properties
+++ b/lucene/ivy-versions.properties
@@ -79,6 +79,7 @@ io.dropwizard.metrics.version = 3.1.2
/io.dropwizard.metrics/metrics-jetty9 = ${io.dropwizard.metrics.version}
/io.dropwizard.metrics/metrics-json = ${io.dropwizard.metrics.version}
/io.dropwizard.metrics/metrics-servlets = ${io.dropwizard.metrics.version}
+/io.dropwizard.metrics/metrics-jvm = ${io.dropwizard.metrics.version}
io.netty.netty-all.version = 4.0.36.Final
/io.netty/netty-all = ${io.netty.netty-all.version}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8601477a/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 7ab926d..1279805 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -155,6 +155,8 @@ New Features
* SOLR-9788: Use instrumented jetty classes provided by the dropwizard metric library. This also introduces a
new /admin/metrics API endpoint to return all registered metrics in JSON format. (shalin)
+* SOLR-9805: Use metrics-jvm library to instrument jvm internals such as GC, memory usage and others. (shalin)
+
Optimizations
----------------------
* SOLR-9704: Facet Module / JSON Facet API: Optimize blockChildren facets that have
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8601477a/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java b/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
index 5a4cfb6..7c5ce2b 100644
--- a/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
@@ -16,6 +16,7 @@
*/
package org.apache.solr.servlet;
+import javax.management.MBeanServer;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
@@ -33,6 +34,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.invoke.MethodHandles;
+import java.lang.management.ManagementFactory;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.Instant;
@@ -45,6 +47,14 @@ import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import com.codahale.metrics.MetricRegistry;
+import com.codahale.metrics.SharedMetricRegistries;
+import com.codahale.metrics.jvm.BufferPoolMetricSet;
+import com.codahale.metrics.jvm.ClassLoadingGaugeSet;
+import com.codahale.metrics.jvm.FileDescriptorRatioGauge;
+import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
+import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
+import com.codahale.metrics.jvm.ThreadStatesGaugeSet;
import org.apache.commons.io.input.CloseShieldInputStream;
import org.apache.commons.io.output.CloseShieldOutputStream;
import org.apache.commons.lang.StringUtils;
@@ -142,6 +152,7 @@ public class SolrDispatchFilter extends BaseSolrFilter {
excludePatterns.add(Pattern.compile(element));
}
}
+ setupJvmMetrics();
try {
Properties extraProperties = (Properties) config.getServletContext().getAttribute(PROPERTIES_ATTRIBUTE);
if (extraProperties == null)
@@ -167,6 +178,17 @@ public class SolrDispatchFilter extends BaseSolrFilter {
log.trace("SolrDispatchFilter.init() done");
}
+ private void setupJvmMetrics() {
+ MBeanServer platformMBeanServer = ManagementFactory.getPlatformMBeanServer();
+ MetricRegistry metricRegistry = SharedMetricRegistries.getOrCreate("solr.jvm");
+ metricRegistry.registerAll(new BufferPoolMetricSet(platformMBeanServer));
+ metricRegistry.registerAll(new ClassLoadingGaugeSet());
+ metricRegistry.register("fileDescriptorRatio", new FileDescriptorRatioGauge());
+ metricRegistry.registerAll(new GarbageCollectorMetricSet());
+ metricRegistry.registerAll(new MemoryUsageGaugeSet());
+ metricRegistry.registerAll(new ThreadStatesGaugeSet()); // todo should we use CachedThreadStatesGaugeSet instead?
+ }
+
private void logWelcomeBanner() {
log.info(" ___ _ Welcome to Apache Solr\u2122 version {}", solrVersion());
log.info("/ __| ___| |_ _ Starting in {} mode on port {}", isCloudMode() ? "cloud" : "standalone", getSolrPort());
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/8601477a/solr/server/ivy.xml
----------------------------------------------------------------------
diff --git a/solr/server/ivy.xml b/solr/server/ivy.xml
index ae8550a..2f3c39c 100644
--- a/solr/server/ivy.xml
+++ b/solr/server/ivy.xml
@@ -37,6 +37,7 @@
<dependency org="io.dropwizard.metrics" name="metrics-servlets" rev="${/io.dropwizard.metrics/metrics-servlets}" conf="metrics" />
<dependency org="io.dropwizard.metrics" name="metrics-json" rev="${/io.dropwizard.metrics/metrics-json}" conf="metrics" />
<dependency org="io.dropwizard.metrics" name="metrics-jetty9" rev="${/io.dropwizard.metrics/metrics-jetty9}" conf="metrics" />
+ <dependency org="io.dropwizard.metrics" name="metrics-jvm" rev="${/io.dropwizard.metrics/metrics-jvm}" conf="metrics" />
<dependency org="com.fasterxml.jackson.core" name="jackson-core" rev="${/com.fasterxml.jackson.core/jackson-core}" conf="metrics"/>
<dependency org="com.fasterxml.jackson.core" name="jackson-databind" rev="${/com.fasterxml.jackson.core/jackson-databind}" conf="metrics"/>
<dependency org="com.fasterxml.jackson.core" name="jackson-annotations" rev="${/com.fasterxml.jackson.core/jackson-annotations}" conf="metrics"/>