워드프레스 성능 향상을 위한 WP-Cron 비활성화 방법

2019년 5월 9일

Cron job (크론 잡) 이란 서버 명령어로서 미리 정해진 시간에 자동으로 실행이 되는 것입니다. 워드프레스나 컨텐츠 관리 시스템 등에서 cron job은 2주마다 플러그인 업데이트, 격일 새벽 2시에 데이터베이스 최적화 실행, 판매 자료를 포함한 CSV 파일을 4시간마다 추출 하는 등의 용도로 사용하는데 아주 유용합니다.

WP-Cron은 어떻게 사용되는가

워드프레스는 자체적으로 cron 실행 기능을 지니고 있는데 이를 WP-Cron이라고 부릅니다. 서버 시간을 참고로 하는 전형적인 cron 스케줄러와는 달리, WP-Cron은 모든 페이지 로드에서 모든 미정 상태의 cron job들을 체크합니다. 트래픽이 많은 사이트에서 WP-Cron은 성능에 있어서 아주 큰 영향을 미치는데요, 이는 모든 페이지 로드에서 적용되기 때문입니다. 한편, 트래픽이 적은 사이트에서 WP-Cron은 종종 신뢰할 만 하지 않은데 이는 페이지가 로드 되는 경우에만 적용되기 때문이죠. 만약 사이트가 어느 정도 이상의 트래픽을 가지지 않는다면, WP-Cron이 스케줄된 임무를 놓치게 되는 경우가 발생할 수 있습니다.

WP-Cron 비활성화 하는 방법

따라서, WP-Cron을 비활성화 하는것이 해결책이라 할 수 있는데요. 또한 서버 레벨의 cron job을 설정하여 정해진 시간에 wp-cron.php를 작동하는 것입니다. WP-Cron을 비활성화하기 위하여 여러분의 wp-config.php파일 아래에 다음을 삽입하시면 됩니다.

define('DISABLE_WP_CRON', 'true');

서버 Cron 추가 방법

이제 워드프레스의 자체 cron 스케줄러가 비활성화 되었기 때문에, 서버의 cron을 만들어서 wp-config.php를 작동시켜야 합니다. 이는 여러분의 웹 호스트에 따라 다음의 몇가지 방법으로 가능합니다.

  1. 여러분이 만약 워드프레스 관리 호스팅 제공자를 사용중이라면, 서포트 팀에 문의하셔서 wp-config.php를 작동시키기 위한 서버 cron을 추가해 달라고 요청할 수 있습니다. 만약 시간 간격에 대해 물어본다면, 10분이나 15분 정도가 적당합니다.
  2. CPanel 호스트를 사용중이라면, 다음의 가이드를 통해서 서버 cron을 추가할 수 있습니다.
  3. 여러분 스스로 서버를 관리하신다면, cron job 추가를 위해 SSH 상에서 crontab -e를 이용하시면 됩니다.

이제 어떻게 서버 cron을 추가하는지는 알기에, 다음으로 코드 스닙넷을 생성하여 추가해야 합니다. 이를 위해서, 저는 다음과 같은 cron job 생성기를 사용할 것을 추천하는데요. 시간 간격 부분을 설정하신 이후에는 이를 실행시키기 위해서 특정 명령어가 필요할 것입니다. 다음의 명령어를 사용하여 wp-cron.php를 작동할 수 있습니다.

curl -ILs -H https://yourdomain.com/wp-cron.php?servercron

cron job 생성기를 통해 위의 명령어를 실행시킨 뒤, 여러분은 아래와 같은 것을 보게 될 것입니다.

*/15 * * * * curl -ILs -H https://yourdomain.com/wp-cron.php?servercron >/dev/null 2>&1

이 cron job은 wp-cron.php 파일을 매 15분마다 작동시킵니다. 참고사항으로 ?servercron 쿼리 스트링은 옵션사항인데요. 저 개인적으로는 cron 리퀘스트를 위한 서버 로그를 확인하는 과정을 좀 더 쉽게 만들어 준다고 판단하여 포함시켰습니다. cron job을 추가하신 이후에는, wp-cron.php로의 핑을 확인하시기 바랍니다. 워드프레스 자체적 WP-Cron의 비활성화는 여러분의 사이트에 눈에 띌 만한 성능 향상을 보여줄텐데요, 이후에 여러분의 성능 최적화 목록에 꼭 포함시킬 것을 추천해 드립니다.


궁금한게 있으세요?

트위터이메일을 통해 연락주시기 바랍니다.