休眠搜索索引速度降低

问题描述

我的代码数据库中有两个实体。一个实体拥有20万条记录,另一个实体具有260万条记录。 我正在使用MassIndexer StartandWait()方法和Start()方法。当我开始用较少的记录来索引我的实体时,即20万,它以恒定的“速度文档/秒”对它们进行索引相当快,但是当它开始以260万记录对另一个实体进行索引时,索引速度在数分钟内降低了英里,而cpu消耗我的窗口显示100%,内存也显示100%,速度下降2000个文档/秒到8个文档/秒,而且看起来永远不会完成。

这是我的代码

    try
    {
        logger.info("Indexing Started============================");
        SimpleIndexingProgressMonitor progressMonitor = new SimpleIndexingProgressMonitor();
        FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);
        MassIndexer massIndexer = fullTextEntityManager.createIndexer()
        .purgeAllOnStart(purgeAllOnStart)
        .progressMonitor(progressMonitor)
        .typestoIndexInParallel(typestoIndexInParallel)
        .batchSizetoLoadobjects(batchSizetoLoadobjects)
        .threadsForSubsequentFetching(8)
        .idFetchSize(idFetchSize)
        .threadsToLoadobjects(threadsToLoadobjects)
        .cacheMode(CacheMode.IGnorE);

        try {
          if (!async) {
            massIndexer.startAndWait();
          } else {
            massIndexer.start();
          }
        } catch (InterruptedException e) {
          logger.error("mass reindexing interrupted: " + e.getMessage());
        } finally {
            fullTextEntityManager.flushToIndexes();
        }
       
        logger.info("Indexing completed============================");
    }       catch(Exception e) {
        logger.info(e.getMessage());
        e.printstacktrace();
        
    }

看看我是否能以固定的速度对此问题进行固定和索引,并且内存和cpu使用率超时是否存在任何问题,那么可能的解决方法是什么?

如何在不降低索引速度的情况下避免这种情况?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...