YARPP 게시글에 따른 부하 처리 방법 (실패)

현재 이 사이트는 관련게시물을 표기하기 위하여 YARPP 플러그인을 사용 중에 있다

하지만 다음과 같은 문제가 있다

YARPP 게시글에 따른 부하 처리 방법 (실패)

문제점

이 사이트 초기에 설치한 YARPP는 속도가 굉장히 빨랐다

원인은 사이트에 포스팅 게시물이 몇 백건에 불과하고 해시태그도 별로 많지 않았다

몇 개월이 지나고 게시물이 몇 만건 이상이 누적되었을 때 나의 실수로 DB에 손상을 입어서 복구했던 일이 있었다

YARPP 플러그인도 다시 설치하였는데, YARPP가 그동안 게시물을 캐시하였던 것들이 전부 사라졌다

결국 처음부터 다시 캐시를 해야 하는 상황이었는데, 이미 포스팅 게시물이 몇 만 건 누적되었기 때문게시물을 하나씩 클릭할 떄마다 몇 10초 이상 쿼리 응답시간이 매우 길어서 방문자들은 사이트에 문제가 있다고 판단했을 것이다

YARPP 가 해당 포스팅 게시물을 캐시하게 되면 다음에 다시 접속하게되면 빠른 응답률을 보여주지만,

캐시하지 않은 다른 수십만건의 게시물은 사용자들이 들어갈 때마다 몇십초이상 기다려야 한다

해결방법

처음에는 사이트의 세팅을 잘못해서 느려졌다 판단하여, 안 쓰는 플러그인을 정리하고

웹서버의 세팅값을 바꾸고 SQL의 튜닝도 했지만 개선은 되지 않았다

결국 YARPP 공식 사이트에서 해결 안되면 삭제하려고 답답한 심정에 방문했는데 하나의 해결 방법을 찾았다

해결방법 사이트 방문하기

Bulk update Post Meta data for YARPP

add_action('init', 'bulk_update_post_meta_data');

function bulk_update_post_meta_data() {

  // guardrail: if current user can't edit posts, bail
  if ( ! current_user_can( 'edit_posts' ) ) return;
        
  $args = array(
    'posts_per_page' => -1,
    'post_type' => 'POST',
    'suppress_filters' => true
  );

  $posts_array = get_posts( $args );

  foreach($posts_array as $post_array) {
    $yarpp_meta['yarpp_display_for_this_post'] = 1;  // YARPP value to update
    update_post_meta( $post_array->ID, 'yarpp_meta', $yarpp_meta );
  }
}

해석하면 다음 함수는 특정 게시물 유형(“POSTTYPEHERE”)의 모든 게시물을 반복하고 키를 새 값과 일치하도록 게시물 메타 데이터를 업데이트를 한다

스니펫 플러그인에 추가 또는 테마의 FUNCTION에 마지막에 붙여넣는다

엄청난 서버 과부하를 초래하기 떄문에 사용자가 없는 시간대에 한번 실행을 하고 반드시 삭제 또는

정지시켜야 한다

해당 코드를 한번 작동 시키면 계속해서 모든 포스트에 캐시를 지속적으로 만들어낸다

새벽 시간대에 실행시켜봐야겠다

배치작업이 끝나면 사이트가 예전보다 쾌적해질 것으로 기대한다

2021-11-03배치작업을 시작해도 이전과 똑같다… 결국 해당 쿼리를 돌리는 배치 작업을 구상하고 있다

2021-11-04 원인을 찾았으며, DB서버 튜닝을 통해 문제점을 해결했다

이 게시물에 대해 평가 해주세요!

결과 0 참여자 0

Your page rank:

리플 남기기