WP-cron을 시스템 cron으로 대체하기

워드프레스는 포스팅의 예약 발행과 같은 스케줄링을 지원하는데, 이는 WP-cron이라는 스케줄러를 통해 처리된다. wp-cron은 매 페이지가 호출될 때마다 로드되어 예약된 작업이 있으면 이를 처리해주는 방식으로 작동한다. 다만 이렇게하면 포스트 발행을 예약한 시점에 접속이 없다면 스케줄러가 실행되지 않거나, 그외 플러그인과의 충돌이나 워드프레스 자체의 버그로 인해서 작업이 누락되는 경우도 발생한다고 한다.

리눅스 서버를 사용한다면 시스템의 cron을 사용해서 이 wp-cron의 실행을 대체할 수 있다. 이 글은 아마존 라이트세일 인스턴스 (Bitnami – wordpress 서버)에서 wp-cron을 끄고 시스템 자체의 cron을 실행하게 하는 방법이다.

wp-cron 비활성화하기

wp-cron을 비활성화하는 방법은 간단하다. wp-config.php 파일을 수정하여 WP-cron을 사용하지 않도록 설정해주면 된다. 다음 한 줄을 wp-config.php 파일에 추가해준다.

// wp-config.php
<?php
define("DISABLE_WP_CRON", true);
...

cron을 통해서 wp-cron 실행하기

그런 후 crontab -e 를 실행해서 다음 라인을 추가한다. 이 설정은 5분마다 실행되어 wget을 사용해서 wp-cron.php 파일에 직접 액세스하여 스케줄된 작업을 처리하게 한다. crontab -e 를 처음 실행하면 어떤 편집기를 사용할 것인지 물어보는데, 각자 취향에 맞춰서 하면 되겠다.

참고로 crontab 설정 방법은 여기를 참고하면 된다.

*/5 * * * * wget -q -O https://mywebsite.com/wp-cron.php > /dev/null 2>&1

이렇게 저장하면 작업 스케줄이 새로 만들어지고 매 시 정각, 5분, 10분, 15분.. 이렇게 5분 주기로 실행될 것이다. 아래 명령으로 시스템 로그를 확인하면 해당 명령이 잘 실행되는지를 체크할 수 있다.

grep "CRON" /var/log/syslog

wp-super cache를 사용한다면

워드프레스의 캐싱 플러그인인 wp super cache를 사용할 때 만약 preload mode를 사용한다면 커스텀 cron의 주기를 너무 길게 가져가지 않도록 주의해야 한다. preload mode는 전체 혹은 일부 포스트와 페이지를 정적 HTML 파일로 미리 만들어두고 서비스하는데, 이 때 지속적으로 대량의 페이지를 처리하면 시스템에 무리가 가기 때문에 한 번에 100개 페이지를 처리하고 약간의 시간을 둔 후 다시 100개를 처리하는 방식으로 작동한다. 이 스케줄은 wp-cron에 의존하기 때문에 wp-cron이 중지되었다면 이 작업에 문제가 생길 수 있다.

만약 cron 작업의 주기가 너무 길다면, 그 동안 작업이 쌓여있다가 한 번에 실행되기 때문이다. 따라서 스케줄러의 호출 주기는 5분 정도로 잡는 것이 적당한 것 같다.

wp super cache의 가비지 컬렉션 처리 역시 wp-cron에 의존하고 있다. 이 역시 처리 주기가 너무 길면 만료여부를 체크하기 위해서 많은 파일을 뒤져봐야 하는데, 네트워크 파일 시스템을 사용하는 경우 많은 양의 파일을 훑어 나가는 작업에 CPU 사용량이 많아진다고 한다. 이는 비단 wp-cron을 비활성화 하지 않더라도 캐시의 만료 주기를 너무 길게 잡아 캐시 파일이 많이 쌓이는 경우에도 발생할 수 있다.

Read more

워드프레스에서 고스트로 이전

워드프레스에서 고스트로 이전

이 글을 쓰면서도 믿기 힘든 사실인데, 블로그라는 걸 처음 시작한지가 20년이 되었습니다. 이글루스에서 처음 시작했다가, SK컴즈가 인수한다고 발표함과 동시에 워드프레스로 플랫폼을 옮겼죠. 워드프레스오 옮긴 이후에는 호스팅 환경을 이리 저리 옮기긴 했지만 거의 18년 가까이 워드프레스를 사용해온 것 같습니다. 그 동안 워드프레스는 블로깅 툴에서 명실상부한 범용CMS로 발전했습니다. 사실 웬만한 홈페이지들은 이제

By sooop
띄어쓰기에 대한 생각

띄어쓰기에 대한 생각

업무 메일을 쓸 때 가장 많이 쓰는 말 중에 하나가 메일 말미에 ‘업무에 참고 부탁 드립니다.‘인데요, 어느 날부터 아웃룩에서 이 ‘부탁 드립니다’가 틀렸다고 맞춤법 지적을 하기 시작했습니다. 맞는 말은 ‘부탁드립니다’라고 붙여 쓰는 거라고. 사실 아래아한글 시절부터 이전의 MS워드까지, 워드프로세서들의 한국어 맞춤법 검사 실력은 거의 있으나 마나 한

By sooop

구글 포토에서 아이클라우드로 탈출한 후기

한 때 구글 포토가 백업 용량을 무제한으로 제공해 주겠다고해서, 구글 포토를 사용해서 사진을 백업해왔습니다. 물론 이 이야기의 결말은 저나 이 글을 읽고 있는 여러분이나 모두 알고 있습니다. 사실 AI에게 학습 시킬 이미지 데이터를 모으기 위한 것일 뿐이라거나 하는 이야기는 그 당시에도 있었습니다만, 에이 그래도 구글인데 용량은 넉넉하게 주겠지…하는 순진한

By sooop

Julia의 함수 사용팁

연산자의 함수적 표기 Julia의 연산자는 기본적으로 함수이며, 함수 호출 표기와 같은 방식으로 호출하는 것이 가능합니다. 또한 그 자체로 함수이기 때문에 filter(), map() 과 같이 함수를 인자로 받는 함수에도 연산자를 그대로 적용하는 것이 가능합니다. 특히 + 연산자는 sum() 함수와 같이 여러 인자를 받아 인자들의 합을 구할 수 있습니다. 2 + 3 # = 5 +(2,

By sooop