我對Hibernate Search非常陌生,並試圖將其與我的應用程序集成。 面對內存泄漏問題(線程進入等待/停泊狀態)。Hibernate搜索配置問題
Hibernate Search配置(非常小)是註釋驅動的。使用:
@Indexed(index = "<index_name>")
@IndexedEmbedded
和
@Field(name = "title", store = Store.YES, analyzer = @Analyzer(definition = "standardAnalyzer")
Hibernate Search的性質:
<property name="hibernate.search.default.indexBase" value="../lucene/indexes" />
<property name="hibernate.search.default.directory_provider" value="filesystem" />
<property name="hibernate.search.default.exclusive_index_use"
value="false" />
使用Tomcat 8部署應用程序。
我的主要問題是,
的VisualVM清楚地表明,Hibernate Search的創建各項指標同步消費者線程。它爲我對服務器進行的每一個調用都這樣做(在我的情況下,每次調用都會產生2個新線程並處於停放狀態)。最終,線程的數量會增加,直到我的服務器無響應。
在服務器關閉時,我得到的錯誤:
09-Aug-2017 17:15:28.151 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [procurewise] appears to have started a thread named [Hibernate Search sync consumer thread for index Category] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread: sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:338) org.hibernate.search.backend.impl.lucene.SyncWorkProcessor.parkCurrentThread(SyncWorkProcessor.java:175) org.hibernate.search.backend.impl.lucene.SyncWorkProcessor.access$300(SyncWorkProcessor.java:35) org.hibernate.search.backend.impl.lucene.SyncWorkProcessor$Consumer.run(SyncWorkProcessor.java:147) java.lang.Thread.run(Thread.java:745)
我使用Spring,Hibernate的,JPA,AOP和JAX-RS,新澤西州。
環境細節:
Hibernate version 5.2.10.Final
Hibernate Search version 5.7.0.Final
Spring version 4.3.6.RELEASE
JPA 2.1
JAVA 8
Jersey 1.8
這是不相關的,但你不應該使用'hibernate.search.default.exclusive_index_use',除非你真的知道你爲什麼需要它。真。另外,你使用的是什麼版本的Hibernate Search? –
@YoannRodière。我已經添加了我正在使用的Hibernate搜索版本。此外,exclusive_index_use屬性試圖停止使用鎖假設MassIndexer衍生多個線程,我認爲這是問題在這裏。但要指出的一點。 –