lucene-cn / lxdb

14 stars 2 forks source link

更新模式超级卡,抓取的堆栈如下 #54

Open muyannian opened 3 years ago

muyannian commented 3 years ago

sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467) java.util.concurrent.ExecutorCompletionService.poll(ExecutorCompletionService.java:202) org.apache.hadoop.hdfs.DFSInputStream.hedgedFetchBlockByteRange(DFSInputStream.java:1356) org.apache.hadoop.hdfs.DFSInputStream.pread(DFSInputStream.java:1538) org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:1507) org.apache.hadoop.fs.FSInputStream.readFully(FSInputStream.java:121) org.apache.hadoop.fs.FSDataInputStream.readFully(FSDataInputStream.java:111) com.luxin.hydrogen.directory.HdfsDirectory$HdfsIndexInput.readInternal(HdfsDirectory.java:291) com.luxin.hydrogen.directory.CustomBufferedIndexInput.refill(CustomBufferedIndexInput.java:175) com.luxin.hydrogen.directory.CustomBufferedIndexInput.readBytes(CustomBufferedIndexInput.java:77) com.luxin.hydrogen.directory.CustomBufferedIndexInput.readBytes(CustomBufferedIndexInput.java:51) org.apache.lucene.store.BufferedIndexInput$SlicedIndexInput.readInternal(BufferedIndexInput.java:418) org.apache.lucene.store.BufferedIndexInput.refill(BufferedIndexInput.java:315) org.apache.lucene.store.BufferedIndexInput.readByte(BufferedIndexInput.java:254) org.apache.lucene.util.fst.ReverseRandomAccessReader.readByte(ReverseRandomAccessReader.java:33) org.apache.lucene.util.fst.FST.readLabel(FST.java:596) org.apache.lucene.util.fst.FST.findTargetArc(FST.java:1357) org.apache.lucene.codecs.blocktree.SegmentTermsEnum.seekExact(SegmentTermsEnum.java:485) org.apache.lucene.index.TermStates.loadTermsEnum(TermStates.java:124) org.apache.lucene.index.TermStates.get(TermStates.java:187) org.apache.lucene.search.TermQuery$TermWeight.getTermsEnum(TermQuery.java:134) org.apache.lucene.search.TermQuery$TermWeight.scorer(TermQuery.java:109) org.apache.lucene.search.Weight.scorerSupplier(Weight.java:147) org.apache.lucene.search.BooleanWeight.scorerSupplier(BooleanWeight.java:379) org.apache.lucene.search.BooleanWeight.scorer(BooleanWeight.java:344) org.apache.lucene.index.FrozenBufferedUpdates.applyQueryDeletes(FrozenBufferedUpdates.java:376) org.apache.lucene.index.FrozenBufferedUpdates.apply(FrozenBufferedUpdates.java:170) org.apache.lucene.index.IndexWriter.forceApply(IndexWriter.java:5542) org.apache.lucene.index.IndexWriter.tryApply(IndexWriter.java:5451) org.apache.lucene.index.IndexWriter.lambda$publishFrozenUpdates$4(IndexWriter.java:2606) org.apache.lucene.index.IndexWriter$$Lambda$602/931558204.process(Unknown Source) org.apache.lucene.index.IndexWriter$EventQueue.processEventsInternal(IndexWriter.java:370) org.apache.lucene.index.IndexWriter$EventQueue.processEvents(IndexWriter.java:360) org.apache.lucene.index.IndexWriter.processEvents(IndexWriter.java:5313) org.apache.lucene.index.IndexWriter.maybeProcessEvents(IndexWriter.java:5306) org.apache.lucene.index.IndexWriter.updateDocuments(IndexWriter.java:1358) org.apache.lucene.index.IndexWriter.updateDocuments(IndexWriter.java:1351) org.apache.hadoop.hbase.regionserver.HydrogenStoreEngine.maybeUpsert(HydrogenStoreEngine.java:593) org.apache.hadoop.hbase.regionserver.HydrogenStoreEngine$2.run(HydrogenStoreEngine.java:418) java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) java.util.concurrent.FutureTask.run(FutureTask.java:266) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) java.lang.Thread.run(Thread.java:748)

muyannian commented 3 years ago

1:blockCache的使用 2:FrozenBufferedUpdates里面使用多线程 3:采用bitset 通过blomfilter预筛选,因为是等值唯一ID,这个会非常有效

muyannian commented 3 years ago

太困了 今天不弄了睡觉

muyannian commented 3 years ago

通过日志分析了下原因,lucene内部憋了一堆term一起执行 20万个term 16个segments 用了60秒

[root@test2 container_1607582769524_0151_01_000002]# grep applyTermDeletes1 executor.log [2021-01-21 14:08:54.225] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 390 msec for 26 segments and 51881 del terms; 0 new deletions [2021-01-21 14:08:56.464] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 549 msec for 20 segments and 32684 del terms; 0 new deletions [2021-01-21 14:08:58.411] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 813 msec for 21 segments and 38711 del terms; 0 new deletions [2021-01-21 14:09:01.614] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 2041 msec for 22 segments and 45583 del terms; 0 new deletions [2021-01-21 14:09:17.544] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 14859 msec for 23 segments and 42948 del terms; 17227 new deletions [2021-01-21 14:09:17.585] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 9 msec for 1 segments and 42948 del terms; 0 new deletions [2021-01-21 14:09:34.974] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 16490 msec for 17 segments and 43927 del terms; 18996 new deletions [2021-01-21 14:09:45.669] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 9870 msec for 18 segments and 40246 del terms; 11402 new deletions [2021-01-21 14:09:49.563] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 6689 msec for 19 segments and 11346 del terms; 5693 new deletions [2021-01-21 14:10:08.876] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 11521 msec for 15 segments and 18607 del terms; 9309 new deletions [2021-01-21 14:10:32.060] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 22571 msec for 18 segments and 51842 del terms; 25815 new deletions [2021-01-21 14:10:46.267] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 13390 msec for 19 segments and 37329 del terms; 18686 new deletions [2021-01-21 14:10:46.397] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 104 msec for 1 segments and 37329 del terms; 0 new deletions [2021-01-21 14:10:48.840] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 5953 msec for 13 segments and 10577 del terms; 5275 new deletions [2021-01-21 14:11:40.793] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 51668 msec for 15 segments and 129534 del terms; 64684 new deletions [2021-01-21 14:11:52.610] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 8757 msec for 88 segments and 13852 del terms; 6897 new deletions [2021-01-21 14:11:54.209] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 138 msec for 9 segments and 13852 del terms; 0 new deletions [2021-01-21 14:13:06.934] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 65276 msec for 16 segments and 207990 del terms; 103966 new deletions [2021-01-21 14:13:24.454] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 13182 msec for 46 segments and 30351 del terms; 15161 new deletions [2021-01-21 14:13:25.938] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 1073 msec for 4 segments and 30351 del terms; 0 new deletions [2021-01-21 14:13:59.965] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 33783 msec for 20 segments and 132854 del terms; 66359 new deletions [2021-01-21 14:14:06.567] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 6578 msec for 1 segments and 132854 del terms; 52 new deletions [2021-01-21 14:14:31.501] (org.apache.lucene.index.FrozenBufferedUpdates:482)[INFO] - applyTermDeletes1 took 18415 msec for 59 segments and 34226 del terms; 17082 new deletions