2011-11-22 65 views
0

我一直在爲我的Web應用程序使用Lucene索引和搜索技術。最初我遇到了「太多打開文件問題」,經過研究,我通過對單個用戶使用通用IndexSearcher進行了修復。然後,當我用更多的併發用戶測試應用程序時,它又開始帶來「太多的打開文件問題」。當用戶數量增加時,Lucene索引中打開的文件太多

我將IndexSearcher對象保留在特定用戶的會話中,該用戶始終保持打開幾個文件(他們當前正在使用它)。任何人都可以幫助解決這個問題,即使有任何數量的用戶?

讓我知道,如果我不清楚上述解釋中的任何地方。

+0

您正在使用哪個操作系統? – DerMike

+0

在應用程序服務器中使用「Linux」 – Manoj

回答

2

Lucene的常見問題有一個nice entry about it

一言以蔽之:

  • 檢查所有的Lucene的IndexReader,IndexWriter類和IndexSearcher的正確關閉
  • 嘗試使用複合文件,限制文件的數量創建
  • 提高限額在你的操作系統上打開文件句柄

我前段時間和Lucene有類似的問題,當你有很多併發用戶時,這個限制可以是e到達。增加文件句柄限制工作得很好。

+0

偉大的線索Vivien。我希望這會起作用。我仍然有一個問題.. 以前,我試圖保持會議中的點擊。這也使文件保持開放,我放棄了這個計劃。有沒有辦法保持結果(或命中)與打開文件的會話? – Manoj

+1

@ user1059414將結果複製到自定義對象中,以便您可以釋放Lucene結果對象,但保留另一種形式的數據。 –

+0

謝謝Vivien。雅我之前嘗試過一次。我創建了自定義對象,將Hits中的值存儲到它中,然後將這些對象打包到單個ArrayList中。我開始在會話中保留這個ArrayList。每件事情都很好,但一切都開始影響業績。當我拿出統計數據時,我發現索引中的數據檢索需要4秒鐘,並將它們打包到自定義對象的ArrayList中需要將近12秒...如果我正在做這些事情,請建議我 – Manoj