Skip to content

[이슈]개발서버 게시글조회 500에러

이은비 edited this page Nov 2, 2023 · 2 revisions

개발 API 서버에서 게시글 조회 시, 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 접속 > 커뮤니티 > 특정 키워드 ( 예: 안녕 ) 검색 > 데이터 반환

장애 해결 과정

  1. 원인 파악하기

서버 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": "예기치 못한 오류가 발생했습니다."
}

위의 형태로 구체적 오류 원인을 파악하기 힘들다.

  1. 서버 내부 로그 확인하기
image

로그에서 눈여겨 봐야 할 부분은 아래이다.

Can't find FULLTEXT index matching the column list

커뮤니티 게시글 조회에는 contents에 글자 수 제한이 없어 TEXT 타입으로 지정했으며, 특정 키워드에 대한 검색을 LIKE에서 FULL TEXT SEARCH로 변경하였다.

변경 과정은 여기를 참고하기.

  1. 개발 DB 서버 내부 게시글 테이블 인덱스 확인하기
show index from borad;

확인 결과 기본 pk와 fk에만 인덱스가 걸려 있었다.

  1. 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;
image

3번의 쿼리를 다시 수행하면 위의 사진과 같이 인덱스가 생긴 것을 확인할 수 있다.

  1. 검증

개발 환경 URL 접속 > 커뮤니티 > 게시글 검색 > 정상 동작 확인

image

회고

환경 분리 과정에서 설정 관련 파일들이 분산되어 있어 불편함을 느꼈다.

곧 도메인 주소 이전을 해야 하므로, 이때 환경 설정 문서를 한 곳에서 집약적으로 관리할 수 있게 해야겠다.

기록의 중요성!! 다시금 깨달으며 보고서 마무리.

Clone this wiki locally