You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2021/11/25 14:15:45 UTC

[iotdb] 01/01: add max_concurrent_sub_query

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

qiaojialin pushed a commit to branch add_max_concurrent_sub_query
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 74b01cb58a5b2b7558dc6997ee8065a5e35b8c58
Author: qiaojialin <64...@qq.com>
AuthorDate: Thu Nov 25 22:14:05 2021 +0800

    add max_concurrent_sub_query
---
 server/src/assembly/resources/conf/iotdb-engine.properties     |  9 ++++++---
 server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java | 10 ++++++++++
 .../main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java    |  5 +++++
 .../org/apache/iotdb/db/query/pool/QueryTaskPoolManager.java   |  5 ++++-
 4 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/server/src/assembly/resources/conf/iotdb-engine.properties b/server/src/assembly/resources/conf/iotdb-engine.properties
index bf3026d..8ec7f17 100644
--- a/server/src/assembly/resources/conf/iotdb-engine.properties
+++ b/server/src/assembly/resources/conf/iotdb-engine.properties
@@ -357,6 +357,12 @@ timestamp_precision=ms
 # the default time period that used in fill query, -1 by default means infinite past time, in ms
 # default_fill_interval=-1
 
+# The max executing time of query. unit: ms
+# query_timeout_threshold=60000
+
+# The max number of sub query thread
+# max_concurrent_sub_query=8
+
 ####################
 ### Merge Configurations
 ####################
@@ -446,9 +452,6 @@ timestamp_precision=ms
 # The limit of write throughput merge can reach per second
 # merge_write_throughput_mb_per_sec=8
 
-# The max executing time of query. unit: ms
-# query_timeout_threshold=60000
-
 ####################
 ### Metadata Cache Configuration
 ####################
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index f5845c5..76f9a67 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -122,6 +122,8 @@ public class IoTDBConfig {
 
   private volatile int maxQueryDeduplicatedPathNum = 1000;
 
+  private int maxConcurrentSubQuery = 8;
+
   /** Ratio of memory allocated for buffered arrays */
   private double bufferedArraysMemoryProportion = 0.6;
 
@@ -755,6 +757,14 @@ public class IoTDBConfig {
     return concurrentWritingTimePartition;
   }
 
+  public int getMaxConcurrentSubQuery() {
+    return maxConcurrentSubQuery;
+  }
+
+  public void setMaxConcurrentSubQuery(int maxConcurrentSubQuery) {
+    this.maxConcurrentSubQuery = maxConcurrentSubQuery;
+  }
+
   public int getDefaultFillInterval() {
     return defaultFillInterval;
   }
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 8df773d..4277cbc 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -165,6 +165,11 @@ public class IoTDBDescriptor {
           Integer.parseInt(
               properties.getProperty("rpc_port", Integer.toString(conf.getRpcPort()))));
 
+      conf.setMaxConcurrentSubQuery(
+          Integer.parseInt(
+              properties.getProperty(
+                  "max_concurrent_sub_query", Integer.toString(conf.getMaxConcurrentSubQuery()))));
+
       conf.setTimestampPrecision(
           properties.getProperty("timestamp_precision", conf.getTimestampPrecision()));
 
diff --git a/server/src/main/java/org/apache/iotdb/db/query/pool/QueryTaskPoolManager.java b/server/src/main/java/org/apache/iotdb/db/query/pool/QueryTaskPoolManager.java
index 0025ef7..8da36e7 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/pool/QueryTaskPoolManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/pool/QueryTaskPoolManager.java
@@ -32,7 +32,10 @@ public class QueryTaskPoolManager extends AbstractPoolManager {
   private static final Logger LOGGER = LoggerFactory.getLogger(QueryTaskPoolManager.class);
 
   private QueryTaskPoolManager() {
-    int threadCnt = IoTDBDescriptor.getInstance().getConfig().getConcurrentQueryThread();
+    int threadCnt =
+        Math.min(
+            IoTDBDescriptor.getInstance().getConfig().getMaxConcurrentSubQuery(),
+            IoTDBDescriptor.getInstance().getConfig().getConcurrentQueryThread());
     pool = IoTDBThreadPoolFactory.newFixedThreadPool(threadCnt, ThreadName.QUERY_SERVICE.getName());
   }