J-한솔넷

Apache Solr 5.5.5 유지보수관련 이슈 정리 본문

웹 개발관련/서버

Apache Solr 5.5.5 유지보수관련 이슈 정리

jhansol 2023. 9. 12. 11:18

2017년부터 유지보수 중인 사이트가 있습니다. 이 사이트는 뒤에서 검색엔전 서버가 동작중입니다. 검색엔진으로 Apache Solr를 사용하고 있습니다. 버전은 5.5.5를 사용하고 있는데, 이 사이트가 Drupal 7.x 기반으로 운영되고, 지원 모듈이 6.x 정도까지 지원하기도 하고, 업그레이드 부작용이 우려되어 더 이상 업그레이드를 하지 않고 있습니다. 최근 Apache Solr관련 몇가지 이슈가 있어 정리를 해두려고 합니다.

색인 데이터의 비대함으로 서버 다운되는 현상

벌써 이 현상은 두 번째 격는 것인데, 인덱스 데이터가 너무 비대해져 메모리에 로드하지 못해서 서버가 다운되는 현상이 발생했습니다. 서버 데몬을 재실행해도 시작되다 다운되어 버립니다.

메모리 제한을 올려주어 1차 해결

최초 도입했을 때는 검색 데이터가 크지 않고, 검색성능으로는 현재 사용으로 충분할 것으로 보았습니다. 이 서버는 현재 1vCore, 2GB 메모리 공간에서 동작하고 있는데, Xmx로 힙 사이즈를 1GB로 늘려 주어 실행해서 실행이 되었습니다. (하지만 최근에 때 다운되어 확인해보니 데이터가 1.4GB 정도로 비대해져 있네요.)

/opt/solr/bin/solr restart -m 1024m -Djava.library.path=/usr/local/lib

색인 데이터 최적화(Optimization)

그글링을 통해 색인 파일이 비대해지는 것은 결격 최적화가 않되어 생기는 문제로 주기적으로 최적화를 진행할 필요가 있는 것으로 보입니다.

주기적으로 위 그림에서 보이는 Optimizze 버튼을 눌러 최적화를 하기도 하지만 crontab에 아래와 같이 자정과 정오에 최적화를 하도록 등록해두어었습니다.

0 0,12 * * * /usr/bin/curl http://localhost:8983/solr/drupal/update?optimize=true

특정 라이브러리 지원 중단으로 인한 예외 발생

이 예외로 인해 Solr 서버가 다운되지는 않지만 최적화를 실행할 때마다 예외가 발생합니다. 메시지를 보면 -Dsolr.enableRunExecutableListener=true옵션을 추가하여 재실행하라는 내용에 따라 아래와 같이 재실행합니다.

/opt/solr/bin/solr restart -m 1024m -Djava.library.path=/usr/local/lib -Dsolr.enableRunExecutableListener=true

인덱스 데이터 삭제 후 재실행

이 방법은 위 방법들이 안되어 최후 수단으로 사용했습니다. 해당 검색엔진 코어 폴더의 인덱스 데이터 폴더(data)를 삭제하고 서버를 재실행한 후 사이트 관리 도구로 다시 색인하는 벙법입니다. 이 작업은 약 5분 정도가 소요되었습니다. 물론 사이트 검색 페이지는 정상으로 돌아왔습니다.

rm -f data
drush sapi-c
drush sapi-i multi_lingual_node 0 100

마치며

Apache Solr를 전문적으로 공부를 하지는 않고, 현재의 상황을 유지하는데 촛점을 두고 있다보니, 위와 같은 정도로만 처리를 하고 있는 상태입니다. 정리를 하면서도 인터넷을 검색해보니 가비지 콜렉션, 샤딩 등의 관심을 가져야하는 것도 보입니다. 어찌 되었든, 제가 관리 중인 서버의 주 문제는 메모리 문제로 보입니다. 대표님에게 사용을 좀 올리자고 해봐야겠습니다.