워드프레스의 사이트 건강(Site Health) 도구에서 사이트 문제나 개선사항을 확인할 수 있습니다. 사이트 건강에서 "예약된 이벤트가 실패했습니다" 오류 메시지가 표시되는 경우 확인 사항에 대해 살펴보겠습니다.
워드프레스 "예약된 이벤트가 실패했습니다" 오류 메시지가 표시되는 경우
워드프레스 사이트 건강 도구
워드프레스 관리자 페이지 > 도구 > 사이트 건강에서 사이트 문제를 확인할 수 있습니다.
위의 그림에서는 2개의 권장 개선사항이 표시되고 있습니다.
- 비활성화 플러그인을 모두 제거해야 합니다.
- 비활성화 테마를 제거해야 합니다.
사용하지 않는 플러그인과 테마는 삭제하는 것이 보안상 좋습니다. 꼭 필요한 플러그인 외에는 비활성화된 플러그인은 삭제하시기 바랍니다. 가령, 저는 UpdraftPlus 백업/복원 플러그인을 필요할 때에만 활성화하여 사이트를 백업하고, 평소에는 비활성화 상태로 도구 있습니다. 이런 경우에는 삭제하지 말고 필요할 때에만 활성화하여 사용하면 될 것입니다.
사이트에 문제가 없으면 "정말 잘 했습니다! 모든 것이 정상적으로 작동되고 있습니다" 문구가 표시됩니다.
"예약된 이벤트가 실패했습니다" 오류 메시지가 표시되는 경우
간혹 다음과 같이 예약한 이벤트가 실패했습니다 에러 메시지가 표시될 수 있습니다.
위의 화면에서는 "예약한 이벤트 wp_update_comment_type_batch을(를) 실행하는데 실패했습니다. 사이트는 여전히 작동되고 있지만, 글을 예약하거나 자동 업데이트가 의도한 것처럼 작동되지 않을 수도 있다는 것을 나타낼 수도 있습니다." 문구가 표시되고 있습니다.
이 문제는 WP-Cron이 비활성화되거나 지연 실행될 때 나타날 수 있습니다.
워드프레스에서는 wp-cron.php라는 파일을 사용하여 가상 Cron 작업이나 예정된 글 게시, 플러그인/테마 업데이트 확인, 알림 이메일 송부 등과 같은 작업을 자동으로 수행합니다. 기본적으로 워드프레스는 예정된 작업이 있을 때 누군가가 워드프레스 사이트를 방문할 때마다 wp-cron.php를 호출하도록 설정되어 있습니다. 방문자가 얼마 없는 사이트의 경우에는 아무 문제가 없지만 방문자들이 방문할 때 여러 번 예정된 작업을 확인하는 것은 매우 비효율적일 수 있고 서버에 리소스 사용량 문제를 야기하고 사이트 로딩이 느리게 할 수 있습니다.
그러므로 방문자 수가 많을 경우 wp-cron을 비활성화하면 사이트 속도 개선에 도움이 됩니다.
[**wp-config.php**] 파일에 다음 라인을 추가하여 WP-CRON을 비활성화할 수 있습니다.
define('DISABLE_WP_CRON', 'true');
일부 웹호스팅에서는 워드프레스를 자동으로 설치하면서 위의 라인을 자동으로 추가하도록 설정되어 있을 수 있습니다.
위의 라인이 추가되면 예약된 작업(예: 예약글 발행, 워드프레스 업데이트 확인 등)이 실행되지 않기 때문에 "예약된 이벤트가 실패했습니다" 오류가 발생하게 됩니다.
저는 wp-cron을 비활성화하는 대신 다음과 같은 라인을 추가하여 wp-cron이 실행되는 시간을 조정했습니다.
define('WP_CRON_LOCK_TIMEOUT', 3600);
위의 코드에서 3600은 3600초를 의미하며 60분을 나타냅니다. 위와 같은 코드를 추가하면 예약된 작업이 지연되어 실행될 수 있지만 예약 작업 실행에는 문제가 없을 것입니다.
요약
정리하면 "예약된 이벤트가 실패했습니다" 에러 문구가 표시되면 wp-cron이 비활성화되어 있는지 체크해보시기 바랍니다.
- wp-config.php 파일에 define('DISABLE_WP_CRON', 'true'); 라인이 추가되어 있거나
- 서버 레벨에서 WP-CRON이 비활성화되어 있을 수 있습니다.
1번의 경우 [**define('DISABLE_WP_CRON', 'true');**] 라인을 삭제하면 문제가 해결됩니다. 잦은 크론 실행으로 인해 사이트 속도가 느려지는 경우 [**define('WP_CRON_LOCK_TIMEOUT', 3600);**]을 추가하여 크론이 실행되는 간격을 조정할 수 있습니다.
2번의 경우에는 웹호스팅 업체에 연락하여 문제를 해결해야 합니다.
사이트 건강(Site Health) 용어 번역에 대하여
중요한 사항은 아니지만 "사이트 건강"이라는 용어는 그다지 바람직한 번역이 아닐 수 있습니다. 컴퓨터 분야에서는 Health를 보통 "상태"로 번역합니다. 예를 들어, MS 용어집에서는 "health"가 "상태"로 번역되어 있습니다.
워드프레스에서도 Site Health가 본래 사이트 상태로 번역되었지만, 언젠가부터 번역이 "사이트 건강"으로 바뀌었고 이 표현이 계속 사용되고 있습니다.
참고
https://avada.tistory.com/2681
https://avada.tistory.com/2659