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 <[email protected]> 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()); }
