검색결과 리스트
java heap space에 해당되는 글 1건
글
[Lucene] java.lang.OutOfMemoryError : Java heap space
검색엔진로그
2011. 3. 15. 12:43
루씬을 사용하는 도중 Searcher 클래스에서 다음과 같은 에러가 발생했다.
java.lang.OutOfMemoryError: Java heap space
at org.apache.lucene.index.SegmentReader$Norm.bytes(SegmentReader.java:463)
at org.apache.lucene.index.SegmentReader.getNorms(SegmentReader.java:1017)
at org.apache.lucene.index.SegmentReader.norms(SegmentReader.java:1024)
at org.apache.lucene.search.TermQuery$TermWeight.scorer(TermQuery.java:79)
at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:210)
at org.apache.lucene.search.Searcher.search(Searcher.java:67)색인파일이 31G 정도 쌓였을 쯤 발생한 에러인데, 색인이 너무 커서, 검색도중 메모리가 부족해지는 현상이었다.
임시방편으로
set JAVA_OPTS="-Xms512m -Xmx1024m"
명령으로 JVM의 힙메모리 크기를 늘려주었더니 뻣는 현상은 해결이 되었다. 하지만 색인 파일은
자료가 쌓일수록 더 커질 것이기 때문에 언젠가 다시 메모리 부족현상이 발생하게 될 것이다.
좀더 근본적인 해결책을 찾아봐야 겠다.
현재는 다수의 램디렉토리와 단일 파일디렉토리를 사용하여 색인을 수행하고 있다. 즉 하나의 파일 색인기를 사용하고 있는데
이 파일 색인기를 하나만 사용할 것이 아니라 다중으로 분리하여 구성하면 위 문제에 대한 해결책이 어느정도 될 것 같다.
이렇게 하면 합너에 읽어들이는 색인파일의 크기도 줄어들 것이고, 최적화도 색인기별로 별도로 수행할 수 있으며,
하나의 색인기가 에러가 발생하더라도 나머지 색인기를 사용할 수 있기 때문에 큰 장점이 된다.
다중 색인기에서 동시에 검색을 지원하는 루씬 클래스도 지원되기 때문에 검색모듈을 구축하는 부분도 크게 달라지지
않는다.
'검색엔진로그' 카테고리의 다른 글
| [Lucene] java.lang.OutOfMemoryError : Java heap space (0) | 2011.03.15 |
|---|---|
| 루씬과 색인,검색 클래스 사용예(Java) (0) | 2011.03.08 |
| 색인과 검색 주요 클래스 (0) | 2011.03.08 |
| 로봇 프로토콜 (0) | 2011.03.07 |