1. 정확한 제품 또는 플러그인 이름
KBoard 6.8
2. 상세 내용
안녕하세요.
최근 KBoard 게시판/댓글 업데이트 이후 WordPress 사이트 속도가 불규칙하게 느려지고 MariaDB CPU 사용률이 크게 상승하는 문제가 발생해 확인한 내용을 공유드립니다.
환경:
CentOS 7 + CWP
MariaDB 10.6.19
PHP-FPM 8.3
WordPress
KBoard 게시판 6.8 / 댓글 5.7
문제는 아래 파일의 protectSearchPosts()에서 실행되는 SQL로 확인되었습니다.
wp-content/plugins/kboard/class/KBRouter.class.php
기존 JOIN 조건:
LEFT JOIN wp_kboard_board_content c
ON p.post_name = CAST(c.uid AS CHAR)
slow query log에서는 해당 SELECT가 약 1~1.5초씩 소요됐고, 전체 SQL을 ANALYZE FORMAT=JSON으로 확인했을 때 wp_kboard_board_content 쪽에 BNL JOIN이 발생했습니다.
기존 측정:
r_total_time_ms: 약 1509ms
join_type: BNL
테스트로 JOIN을 아래와 같이 변경했습니다.
LEFT JOIN wp_kboard_board_content c
ON c.uid = CAST(p.post_name AS UNSIGNED)
AND p.post_name = CAST(c.uid AS CHAR)
변경 후:
r_total_time_ms: 약 32ms
access_type: eq_ref
key: PRIMARY
BNL JOIN 없음
결과 동등성도 확인했습니다.
lost_original_matches: 0
old_minus_new: 0
new_minus_old: 0
현재 운영 환경에서 KBRouter.class.php의 JOIN 부분만 위와 같이 변경한 뒤 확인한 결과,
MariaDB CPU 사용률 감소
게시글 등록 속도 정상화
사이트 전반 응답 속도 개선
KBoard 게시글 등록/조회 정상
상태입니다.
같은 KBoard를 사용하는 다른 사이트에서는 게시글 수가 적어 증상이 거의 없었고, 게시글 및 KBoard 복제글이 많이 누적된 사이트에서 문제가 크게 나타났습니다.
권한 강화 기능 자체를 제거하는 방식보다는 해당 JOIN 구조를 한번 검토해주시면 좋을 것 같습니다.
제가 적용한 수정안이 모든 환경에서 안전하다고 단정할 수는 없으므로, 개발팀에서 검토 후 공식 업데이트에 반영 가능한지 확인 부탁드립니다.
감사합니다.
3. 확인 가능한 상세 페이지 주소
4. 수정한 코드 내역 (있다면)
수정 파일:
/wp-content/plugins/kboard/class/KBRouter.class.php
기존 코드:
LEFT JOIN `{$wpdb->prefix}kboard_board_content` c ON p.post_name=CAST(c.uid AS CHAR)
수정 코드:
LEFT JOIN `{$wpdb->prefix}kboard_board_content` c ON c.uid=CAST(p.post_name AS UNSIGNED) AND p.post_name=CAST(c.uid AS CHAR)
기존 문자열 비교 조건은 그대로 유지하면서, c.uid의 PRIMARY KEY를 이용할 수 있도록 숫자 UID 조건을 추가했습니다.
수정 전 전체 SQL을 ANALYZE FORMAT=JSON으로 측정했을 때 약 1509ms가 소요되었으며 BNL JOIN이 발생했습니다.
수정 조건으로 동일 SQL을 측정한 결과 약 32ms로 감소했고, wp_kboard_board_content 접근 방식이 eq_ref / PRIMARY로 변경되면서 BNL JOIN이 사라졌습니다.
또한 기존 SQL과 수정 SQL의 결과 차이를 확인한 결과:
lost_original_matches: 0
old_minus_new: 0
new_minus_old: 0
으로 확인되었습니다.
실제 운영 파일에는 위 JOIN 한 부분만 수정했으며, PHP 8.3 CLI에서 문법 검사를 통과한 뒤 PHP-FPM 8.3을 reload하여 적용했습니다.
적용 후 현재까지 확인한 결과는 다음과 같습니다.
MariaDB CPU 사용률 감소
게시글 등록 속도 정상화
사이트 전반 응답 속도 개선
KBoard 게시글 등록 및 조회 정상
현재까지 기능상 이상은 확인되지 않았습니다.
AI에 의해 자동 생성된 답변이에요 😀
상세한 분석 내용과 수정안을 공유해 주셔서 감사합니다.
KBoard 6.8 버전의 protectSearchPosts() 함수 내 SQL 쿼리에서 발생한 성능 저하 이슈와 관련하여, 제안해 주신 인덱스 최적화 방안은 매우 유의미한 내용으로 판단됩니다.
공유해 주신 내용은 기술 지원팀 및 개발팀에 전달하여 다음 사항들을 중점적으로 검토하도록 하겠습니다.
- 제안하신 JOIN 조건(c.uid 추가)이 다양한 DB 환경(MySQL, MariaDB 버전별 차이 등)에서 동일하게 성능 개선 효과가 있는지 확인
- 기존 문자열 비교 조건 유지와 숫자형 캐스팅 병행 시 발생할 수 있는 예외 케이스 검토
- 대용량 데이터 환경에서의 안정성 테스트 후 공식 업데이트 반영 여부 결정
사용자님의 전문적인 분석 덕분에 서비스 개선에 큰 도움이 될 것 같습니다. 검토 결과나 추가적인 업데이트 소식은 코스모스팜 공식 커뮤니티나 업데이트 로그를 통해 확인하실 수 있도록 준비하겠습니다.
소중한 의견 감사드립니다.
↓ 아래 버튼을 눌러서 피드백해주세요.