최대 절전 모드 검색을 사용하여 인덱스 할 엔티티 클래스가 7 개 있습니다. MassIndexer와 FlushToIndexes를 모두 시도한 결과 인덱서 프로세스가 가장 작은 엔트리를 거치지 만 가장 큰 엔티티/테이블은 끝나지 않았습니다. 비록 MassIndexerProgressMonitor가 인덱싱을 완료했다고 말했지만 말입니다. 할당 된 100-200MB가 될 때 프로세스가 멈 춥니 다. 색인 생성 프로세스가 제대로 끝나기를 바랍니다.Hibernate Search Indexer 프로세스가 하반기 작업 후에 응답하지 않음
질문 : 코드가 맞습니까? 최대 절전 모드 나 데이터베이스 설정을 조정해야합니까?
환경 : 64 비트 Windows 7, 보스, Struts2, 최대 절전 모드, 최대 절전 모드 검색, 루씬, SQL 서버. Hibernate Search Index는 파일 시스템에 위치한다.
MassIndexer 코드 샘플 :
final Session session = HibernateSessionFactory.getSession();
final FullTextSession fullTextSession = Search.getFullTextSession(session);
MassIndexerProgressMonitor monitor = new IndexProgressMonitor("Kanalregister");
fullTextSession.createIndexer()
.purgeAllOnStart(true)
.progressMonitor(monitor)
.batchSizeToLoadObjects(BATCH_SIZE) // 250000
.startAndWait();
FlushToIndexes 코드 샘플 : (.. 최대 절전 모드 심판이 문서에서는)
final Session session = HibernateSessionFactory.getSession();
final FullTextSession fullTextSession = Search.getFullTextSession(session);
fullTextSession.setFlushMode(FlushMode.MANUAL);
fullTextSession.setCacheMode(CacheMode.IGNORE);
Transaction t1 = fullTextSession.beginTransaction();
// Scrollable results will avoid loading too many objects in memory
ScrollableResults results = fullTextSession.createCriteria(Land.class)
.setFetchSize(BATCH_SIZE) // 250000
.scroll(ScrollMode.FORWARD_ONLY);
int index = 0;
while (results.next()) {
index++;
fullTextSession.index(results.get(0)); // index each element
if (index % BATCH_SIZE == 0) {
fullTextSession.flushToIndexes(); // apply changes to indexes
fullTextSession.clear(); // free memory since the queue is processed
}
}
t1.commit();
(인덱스 확인을 보이지만 결코 끝나지)
모든 색인 생성을 조롱 할 때 코드가 종료되는 것으로 확인됩니다. rk, hibernate.cfg.xml에서 다음 설정을 사용하십시오 :
<property name="hibernate.search.default.worker.backend">blackhole</property>
안녕하세요, 명확히하실 수 있습니다 : - 어떤 데이터베이스 - 어떤 버전 - 두 가지 방법 중 어느 것이 효과가 있습니까? – Sanne
안녕하세요, 저는 SQL Server 2008을 사용하고 있습니다. MassIndexer는 중간에 작동하며 FlushToIndexes는 작은 테이블에 대한 인덱스를 작성할 수 있습니다. (작전, 큰 테이블을 시도하는 동안, 큰 테이블에 대한 몇 가지 구성 오류있어, 잠깐 만요.) –
batch_size는 매우 높습니다. 대개 5와 100 사이의 값이어야합니다. 아직도 나는 이것이 문제를 설명한다고 생각하지 않는다. GC 작업을 확인하고 전체 스레드 덤프를 게시 할 수 있습니까? 이것은 Hibernate Search forums에 더 적합 할 수있다. https://forum.hibernate.org/viewforum.php?f=9 – Sanne