- 상태
- 해결됨
- 보고된 제품
- WPML Multilingual CMS 3.1.9.7
- 해결된 버전
- 3.2
문제 개요
페이지를 사용할 수 없게 되거나 로드 속도가 매우 느려집니다.
실행되는 쿼리를 모니터링할 수 있는 경우 다음 쿼리에 대한 참조를 확인할 수 있습니다.
SELECT meta_key FROM wp_postmeta GROUP BY meta_key ORDER BY meta_key LIMIT 1000;
임시 해결 방법
WPML 파일 하나를 약간 편집해야 합니다.
FTP 클라이언트를 사용하여 이 파일을 편집할 수 있습니다.
wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/translation-management.class.php을 여세요.- 102번째 줄로 이동하여 다음 줄을 확인하세요.
$this->initial_custom_field_translate_states(); - 줄 맨 앞에 “//”를 추가하여 해당 줄을 주석 처리하세요.
- 파일을 저장하세요.
이렇게 하면 성능이 크게 향상될 수 있다는 점을 제외하고는 아무것도 변경되지 않습니다. 이 변경에 따른 부작용은 없습니다. 과거에는 역할을 했지만 더 이상 필요하지 않은 코드를 주석 처리하는 것입니다.
백엔드와 프런트엔드 모두에서 실행되는 쿼리가 급증하는 현상을 확인했습니다. 이는 (당사 사이트와 같이) 수백만 개의 postmeta 항목이 있는 규모가 매우 큰 사이트에만 영향을 미칩니다.
이 쿼리는 더 이상 중요한 역할을 하지 않는 이전 로직에서 발생한 것입니다. WPML 3.2에서는 이를 완전히 제거합니다.
페이지 로딩 시간이 크게 급증한 경우 이 문제일 수 있습니다.
하지만 WordPress 4.2에서 문자 집합을 UTF8-bytes로 변경했기 때문에 다른 많은 플러그인과 테마에서 성능 문제가 나타날 수 있습니다. 이 업그레이드는 (당사 서버에서 발생한 것처럼) 인덱싱을 변경할 수 있으며 (당사가 겪은 것처럼) MySQL과 예기치 않은 상호 작용을 일으킬 수 있습니다. 이로 인해 영향이 매우 적었던 요소가 갑자기 심각한 문제를 일으킬 수 있습니다.
따라서 MySQL 느린 쿼리 로그를 활성화하고 어떤 쿼리가 서버 성능에 실제로 영향을 미치고 있는지 확인하는 것이 좋습니다.