워드프레스 속도 개선과 CRON


워드프레스에서는 예약발행과 같이 미래의 지정된 시간에 특정 작업을 예약하거나, 버전 업데이트 확인 등과 같이 일정 주기로 특정 작업을 수행하도록 예약하는 방식을 지원하는데요(WP Cron), 코어에서도 그렇지만 많은 플러그인과 테마, 프레임웍 등에서 이러한 예약작업을 등록합니다. 이 외에도 주기적으로 캐시했던 데이터를 지우고 새로 캐시를 생성하는데도 사용되기도 하는 등 아주 다양하게 활용되고 있습니다.

우선, CRON 이라고 하는 것은 UNIX 기반 시스템에서 시간을 기준으로 작업을 수행하는 프로그램(명령)입니다. 한마디로 작업 스케줄러라고 보시면 되는 것이죠.

이 CRON 이라는 것이 기본적으로는 시스템 백그라운드에서 실행되는 것으로서 사용자에게는 거의 영향을 미치지 않는 것이 기본이지만, 워드프레스라는 웹 어플리케이션에서 시스템에 접근할 수 있는 권한이 한정적이기도 하고 일반적인 호스팅에서는 이를 지원하지 않기 때문에(보안, 리소스 관리) 워드프레스 자체적으로 이를 지원하도록 만든것이 WP Cron 입니다.

이에 따라서 사용자들이 사이트에 접속하여 페이지를 로딩하는 중간에 예약된 작업을 백그라운드에서 실행하는 과정에서 수초에서 길게는 몇 분가량 페이지 로딩이 지연되는 경우가 있게 됩니다.

통상적으로 시간이 오래 걸리는 예약 작업은 사이트 관리자가 페이지를 로드할 때만 적용되긴 하지만, 다양한 플러그인과 테마를 사용하다 보면 그렇지 않은 경우도 종종 발생하게 됩니다.

사이트 페이지 로딩이 매번 느린 경우가 아니라 간헐적으로 한번씩 느려지는 경우라면 CRON 작업을 하고 있구나 라고 예상하셔도 좋을 것입니다.

아래 언급드리는 내용은 국내의 일반 호스팅 사용자라면 적용할 수 없는 사항이라는 것을 미리 말씀드리도록 하겠습니다. 단독(가상, 클라우드)서버를 통해 (U)NIX 환경에서 사이트를 운영중이시거나, cPanel 과 같은 툴을 제공하는 해외 호스팅을 사용중인 분들이라면 WP Cron을 막아두고 시스템의 CRON을 통해 예약 작업을 수행함으로서 이러한 지연 현상을 방지할 수 있습니다.

우선, WP Cron 을 막는 방법은 wp-config.php 파일을 열어 아래 내용 한 줄을 추가해 주시면 됩니다.

define('DISABLE_WP_CRON', true);

이제 시스템 상에서 워드프레스의 예약 작업을 수행하도록 등록해 보겠습니다.

단독 서버를 운영중일 경우(telnet/ssh를 통해 서버에 접속)

  • $ crontab -e # 예약작업 등록/수정 명령어
  • 그리고 뜨는 화면에서 아래 내용을 한 줄 추가해 주시면 됩니다.(사이트 주소는 자신의 것으로 변경해야 함)
    */15 * * * *    wget -q -O - http://{mysite.com}/wp-cron.php?doing_wp_cron >/dev/null 2>&1
  • 위 예제는 15분에 한번씩 예약 작업 수행요청을 하고, 등록된 작업이 있다면 수행하는 명령입니다. 자세한 crontab 사용법은 구글 등에서 검색해 보시거나, 이 페이지를 참고해 보세요. 예약작업이 아주 많다면 시간단위를 짧게 하실 수 있고, 그렇지 않다면 더 길게 잡으시면 됩니다.

cPanel 을 통한 예약작업 등록

  • cPanel 에 로그인
  • Advanced 섹션에서, Cron jobs 클릭.
  • Add New Cron Job 에서, time interval 을 선택합니다. (HostGator 에서는 15분 이상을 선택하길 권장합니다.)
  • cron 명령에 아래와 같은 내용을 추가해 합니다.(사이트 주소는 자신의 것으로 변경해야 함)
    wget -q -O - http://{mysite.com}/wp-cron.php?doing_wp_cron >/dev/null 2>&1

 


One response to “워드프레스 속도 개선과 CRON”