-
Notifications
You must be signed in to change notification settings - Fork 0
[이슈]개발서버 게시글조회 500에러
일시 : 2023.11.02 18:00
최초 발견자 : 클라이언트 팀 @상민님
상황 : 커뮤니티에서 게시글 검색 시, 서버 500 에러 발생
Request URL : GET {host}:{port}/api/v1/boards?prefix=DEFAULT&search=%EC%95%88%EB%85%95&order=RECENT&page=0
Response Body
{
"code": "C0000",
"message": "예기치 못한 오류가 발생했습니다."
}
원인 : 게시글 검색에서 FULL TEXT INDEX를 적용해서 사용하고 있음. ( 검색 대상인 데이터의 크기가 클 경우, 조회 속도 향상을 위해 인덱스를 걸어서 조회 범위를 단축시킴 )
개발 DB 서버 설정하면서, 게시글 테이블에 인덱스 설정을 빼먹어서 발생함.
해결 : 개발 DB 서버 게시글 테이블에 인덱스 생성
확인 방법 : 개발환경 URL 접속 > 커뮤니티 > 특정 키워드 ( 예: 안녕 ) 검색 > 데이터 반환
- 원인 파악하기
서버 Response 분석
Request URL : GET {host}:{port}/api/v1/boards?prefix=DEFAULT&search=%EC%95%88%EB%85%95&order=RECENT&page=0
Response Body
{
"code": "C0000",
"message": "예기치 못한 오류가 발생했습니다."
}
위의 형태로 구체적 오류 원인을 파악하기 힘들다.
- 서버 내부 로그 확인하기
로그에서 눈여겨 봐야 할 부분은 아래이다.
Can't find FULLTEXT index matching the column list
커뮤니티 게시글 조회에는 contents에 글자 수 제한이 없어 TEXT 타입으로 지정했으며, 특정 키워드에 대한 검색을 LIKE에서 FULL TEXT SEARCH로 변경하였다.
변경 과정은 여기를 참고하기.
- 개발 DB 서버 내부 게시글 테이블 인덱스 확인하기
show index from borad;
확인 결과 기본 pk와 fk에만 인덱스가 걸려 있었다.
- FULL TEXT INDEX 추가하기
ALTER TABLE board ADD FULLTEXT INDEX idx_board_title(title) WITH PARSER NGRAM;
ALTER TABLE board ADD FULLTEXT INDEX idx_board_content(content) WITH PARSER NGRAM;
3번의 쿼리를 다시 수행하면 위의 사진과 같이 인덱스가 생긴 것을 확인할 수 있다.
- 검증
개발 환경 URL 접속 > 커뮤니티 > 게시글 검색 > 정상 동작 확인
환경 분리 과정에서 설정 관련 파일들이 분산되어 있어 불편함을 느꼈다.
곧 도메인 주소 이전을 해야 하므로, 이때 환경 설정 문서를 한 곳에서 집약적으로 관리할 수 있게 해야겠다.
기록의 중요성!! 다시금 깨달으며 보고서 마무리.