You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by wu...@apache.org on 2018/04/08 15:14:52 UTC

[incubator-servicecomb-java-chassis] 07/09: SCB-422 log publisher output threadPool informations

This is an automated email from the ASF dual-hosted git repository.

wujimin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit b8cb6f8dac9ffe5f2b50e31763e9878384ab86ca
Author: wujimin <wu...@huawei.com>
AuthorDate: Mon Apr 2 11:37:47 2018 +0800

    SCB-422 log publisher output threadPool informations
---
 .../metrics/core/publish/DefaultLogPublisher.java  | 25 ++++++++++++++++++++++
 .../core/publish/TestDefaultLogPublisher.java      |  6 ++++++
 2 files changed, 31 insertions(+)

diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
index 26a3815..a4efedd 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/DefaultLogPublisher.java
@@ -26,6 +26,7 @@ import org.apache.servicecomb.foundation.metrics.PolledEvent;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
 import org.apache.servicecomb.metrics.core.meter.invocation.MeterInvocationConst;
 import org.apache.servicecomb.metrics.core.publish.model.DefaultPublishModel;
+import org.apache.servicecomb.metrics.core.publish.model.ThreadPoolPublishModel;
 import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPerf;
 import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPerfGroup;
 import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPerfGroups;
@@ -75,12 +76,36 @@ public class DefaultLogPublisher implements MetricsInitializer {
 
     PublishModelFactory factory = new PublishModelFactory(meters);
     DefaultPublishModel model = factory.createDefaultPublishModel();
+
+    printThreadPoolMetrics(model, sb);
+
     printConsumerLog(model, sb);
     printProducerLog(model, sb);
 
     LOGGER.info(sb.toString());
   }
 
+  protected void printThreadPoolMetrics(DefaultPublishModel model, StringBuilder sb) {
+    if (model.getThreadPools().isEmpty()) {
+      return;
+    }
+
+    sb.append("threadPool:\n");
+    sb.append("  corePoolSize maxThreads poolSize currentThreadsBusy queueSize taskCount completedTaskCount name\n");
+    for (Entry<String, ThreadPoolPublishModel> entry : model.getThreadPools().entrySet()) {
+      ThreadPoolPublishModel threadPoolPublishModel = entry.getValue();
+      sb.append(String.format("  %-12d %-10d %-8d %-18d %-9d %-9.1f %-18.1f %s\n",
+          threadPoolPublishModel.getCorePoolSize(),
+          threadPoolPublishModel.getMaxThreads(),
+          threadPoolPublishModel.getPoolSize(),
+          threadPoolPublishModel.getCurrentThreadsBusy(),
+          threadPoolPublishModel.getQueueSize(),
+          threadPoolPublishModel.getAvgTaskCount(),
+          threadPoolPublishModel.getAvgCompletedTaskCount(),
+          entry.getKey()));
+    }
+  }
+
   protected void printConsumerLog(DefaultPublishModel model, StringBuilder sb) {
     OperationPerfGroups consumerPerf = model.getConsumer().getOperationPerfGroups();
     if (consumerPerf == null) {
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
index 056dd25..c8ffc55 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestDefaultLogPublisher.java
@@ -32,6 +32,7 @@ import org.apache.servicecomb.foundation.test.scaffolding.log.LogCollector;
 import org.apache.servicecomb.foundation.vertx.VertxUtils;
 import org.apache.servicecomb.metrics.core.meter.invocation.MeterInvocationConst;
 import org.apache.servicecomb.metrics.core.publish.model.DefaultPublishModel;
+import org.apache.servicecomb.metrics.core.publish.model.ThreadPoolPublishModel;
 import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPerf;
 import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPerfGroup;
 import org.apache.servicecomb.metrics.core.publish.model.invocation.OperationPerfGroups;
@@ -157,6 +158,8 @@ public class TestDefaultLogPublisher {
     model.getConsumer().setOperationPerfGroups(operationPerfGroups);
     model.getProducer().setOperationPerfGroups(operationPerfGroups);
 
+    model.getThreadPools().put("test", new ThreadPoolPublishModel());
+
     new MockUp<PublishModelFactory>() {
       @Mock
       DefaultPublishModel createDefaultPublishModel() {
@@ -175,6 +178,9 @@ public class TestDefaultLogPublisher {
         "vertx:\n" +
         "  name       eventLoopContext-created\n" +
         "  v          1\n" +
+        "threadPool:\n" +
+        "  corePoolSize maxThreads poolSize currentThreadsBusy queueSize taskCount completedTaskCount name\n" +
+        "  0            0          0        0                  0         0.0       0.0                test\n" +
         "consumer:\n" +
         "  tps     latency(ms) max-latency(ms) operation\n" +
         "  rest.OK:\n" +

-- 
To stop receiving notification emails like this one, please contact
wujimin@apache.org.