From d26a3f3540831b5190065fdd7eb97c4893cb86cd Mon Sep 17 00:00:00 2001 From: jmal Date: Mon, 10 Jun 2024 12:16:49 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E5=A4=9A=E4=B8=AA?= =?UTF-8?q?=E5=A4=A7=E6=96=87=E4=BB=B6=E5=90=8C=E6=97=B6=E7=B4=A2=E5=BC=95?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jmal/clouddisk/lucene/LuceneService.java | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/jmal/clouddisk/lucene/LuceneService.java b/src/main/java/com/jmal/clouddisk/lucene/LuceneService.java index 3b07ae91..f2cd45a4 100644 --- a/src/main/java/com/jmal/clouddisk/lucene/LuceneService.java +++ b/src/main/java/com/jmal/clouddisk/lucene/LuceneService.java @@ -78,6 +78,10 @@ public class LuceneService { * 更新索引内容线程池 */ private ExecutorService executorUpdateContentIndexService; + /** + * 更新大文件索引内容线程池 + */ + private ExecutorService executorUpdateBigContentIndexService; /** * 定时任务线程池 @@ -129,6 +133,9 @@ public void init() { log.info("updateContentIndexTask 线程数: {}, maxProcessors: {}", processors, maxProcessors); executorUpdateContentIndexService = ThreadUtil.newFixedExecutor(processors, 1, "updateContentIndexTask", true); } + if (executorUpdateBigContentIndexService == null) { + executorUpdateBigContentIndexService = ThreadUtil.newFixedExecutor(2, 100, "updateBigContentIndexTask", true); + } } /** @@ -665,17 +672,28 @@ public void processFilesToBeIndexed() throws IOException { if (fileIntroVO != null) { // 处理待索引文件 updateIndexStatus(fileIntroVO, IndexStatus.INDEXING); - long size = fileIntroVO.getSize(); - if (RebuildIndexTaskService.isSyncFile() || size > 20 * 1024 * 1024) { - updateIndex(true, fileIntroVO); - } else { - executorUpdateContentIndexService.execute(() -> updateIndex(true, fileIntroVO)); - } + processFileThreaded(fileIntroVO); } } } } + private void processFileThreaded(FileIntroVO fileIntroVO) { + long size = fileIntroVO.getSize(); + if (RebuildIndexTaskService.isSyncFile()) { + // 单线程处理 + updateIndex(true, fileIntroVO); + } else { + if (RebuildIndexTaskService.isSyncFile() || size > 20 * 1024 * 1024) { + // 大文件线程 + executorUpdateBigContentIndexService.execute(() -> updateIndex(true, fileIntroVO)); + } else { + // 小文件线程 + executorUpdateContentIndexService.execute(() -> updateIndex(true, fileIntroVO)); + } + } + } + private void startProcessFilesToBeIndexed() { executorCreateIndexService.execute(() -> { if (!toBeIndexedLock.tryLock()) { @@ -701,6 +719,9 @@ public void destroy() { if (executorUpdateContentIndexService != null) { executorUpdateContentIndexService.shutdown(); } + if (executorUpdateBigContentIndexService != null) { + executorUpdateBigContentIndexService.shutdown(); + } if (scheduler != null) { scheduler.shutdown(); }