주말에 워드프레스 PHP 8 적용해 보고 그 결과를 기반으로 워드프레스 5.6에 PHP 8 적용은 아직 무리이고 많은 시간 최적화가 필요하다는 결론을 얻었습니다.
오랬동안 PHP 8의 성능이 대대적으로 개선된다는 정보가 있어 솔직히 엄청 기대를 했었습니다.
그래서 지난 11월 26일 PHP 8 출시 후 이러 12월 9일 PHP 8에 맞추었다는 워드프레스 5.6이 출시되자 주말을 이용해 신규 서버를 세팅 해 봤습니다.
참고로 PHP 8 설치 방법은 PHP 25년 역사의 새장을 여는 PHP 8 설치 방법 – 우분투 및 데비안 기준을 참조하시기 바랍니다.
그 결과 엄청난 실망을 금할 수 없었습니다.
- 우선 PHP 8에 워드프레스 5.6 적용 시 문제가 되는 플러그인들과 php 코드가 너무 많았습니다.
- 워드프레스 debug 모드를 활성화해서 어떤 문제가 있는지 차자아내, 문제가 되는 플러그인들을 제거하니 그럭저럭 사이트가 작동은 되더군요.
- 그렇지만 유사한 조건으로 PHP 7.4에 워드프레스 5.6을 적용한 사이트가 PHP 8 적용한 사이트보다 빨랐습니다.
서버 성능은 PHP 8을 적용한 서버가 한 단계 더 높은 성능을 낸다는 Vultr High Performance 였습니다. 그런데도 전체 성능은 오히려 더 좋지 않더군요. - 결국 현 단계에서는 PHP 8 적용 리스크가 너무 크고, 속도도 개선되지 않고 오히려 이런저런 문제가 있어서 인지 속도가 더 느립니다.
PHP 8 적용 시 나타나는 문제
여러 사이트를 테스트해 보았지만 일부 플러그인이 가장 큰 문제로 보였습니다.
저의 경우 애드센스 광고를 뿌려 주는 Ad Insert pro라는 플러그인이 치명적인 오류(Fatal error)를 낸다고 나왔고, Rank Math도 상당히 많은 문제를 일키는 것 같더군요.
디버그 모드에서 발생하는 문제가 아래처럼3 4개로 굉장히 많은데요. 참고로 보시기 바랍니다. 기록 삼아 남겨보겠습니다.
Deprecated: Required parameter $field_id follows optional parameter $type in happist/wp-content/plugins/seo-by-rank-math/vendor/cmb2/cmb2/includes/rest-api/CMB2_REST.php on line 764
Fatal error: Uncaught TypeError:
Unsupported operand types: int - string in happist/wp-content/plugins/ad-inserter-pro/class.php:6349 Stack trace:
1 happist/wp-includes/class-wp-hook.php(287): ai_content_hook()
2 happist/wp-includes/plugin.php(212): WP_Hook->apply_filters()
3 happist/wp-includes/formatting.php(3822): apply_filters()
4 happist/wp-includes/class-wp-hook.php(287): wp_trim_excerpt()
5 happist/wp-includes/plugin.php(212): WP_Hook->apply_filters()
6 happist/wp-includes/post-template.php(429): apply_filters()
7 happist/wp-content/plugins/seo-by-rank-math/includes/opengraph/class-opengraph.php(152): get_the_excerpt()
8 happist/wp-content/plugins/seo-by-rank-math/includes/opengraph/class-opengraph.php(129): RankMath\OpenGraph\OpenGraph->fallback_description()
9 happist/wp-content/plugins/seo-by-rank-math/includes/opengraph/class-facebook.php(210): RankMath\OpenGraph\OpenGraph->get_description()
10 happist/wp-includes/class-wp-hook.php(287): RankMath\OpenGraph\Facebook->description()
11 happist/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters()
12 happist/wp-includes/plugin.php(551): WP_Hook->do_action()
13 happist/wp-content/plugins/seo-by-rank-math/includes/traits/class-hooker.php(89): do_action_ref_array()
14 happist/wp-content/plugins/seo-by-rank-math/includes/opengraph/class-opengraph.php(78): RankMath\OpenGraph\OpenGraph->do_action()
15 happist/wp-includes/class-wp-hook.php(287): RankMath\OpenGraph\OpenGraph->output_tags()
16 happist/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters()
17 happist/wp-includes/plugin.php(551): WP_Hook->do_action()
18 happist/wp-content/plugins/seo-by-rank-math/includes/traits/class-hooker.php(89): do_action_ref_array()
19 happist/wp-content/plugins/seo-by-rank-math/includes/frontend/class-head.php(153): RankMath\Frontend\Head->do_action()
20 happist/wp-includes/class-wp-hook.php(287): RankMath\Frontend\Head->head()
21 happist/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters()
22 happist/wp-includes/plugin.php(484): WP_Hook->do_action()
23 happist/wp-includes/general-template.php(3005): do_action()
24 happist/wp-content/themes/generatepress/header.php(17): wp_head()
25 happist/wp-includes/template.php(730): require_once('…')
26 happist/wp-includes/template.php(676): load_template()
27 happist/wp-includes/general-template.php(48): locate_template()
28 happist/wp-content/themes/generatepress/page.php(17): get_header()
29 happist/wp-includes/template-loader.php(106): include('…')
30 happist/wp-blog-header.php(19): require_once('…')
31 happist/index.php(17): require('…')
32 {main} thrown in happist/wp-content/plugins/ad-inserter-pro/class.php on line 6349
Code language: PHP (php)
속도 비교
webpagetest.org에서 테스트해 본 속도입니다.
PHP 8 적용한 Vultr High performance 서버
- PHP 8을 적용한 서버에서는 TTFB는 0.295s, Start render 1.000s,Largest Contentful Paint 1.082s를 기록
- webpagetest.org에서 테스트 결과 보기
- 동시 테스트를 위해서 같은 콘텐츠 및 데이타베이스를 사용하되 사이트를 etrend.cc/casestudy를 테스트
PHP 7.4 적용한 Vultr Clou Compute 서버
- 기존 PHP 7.4를 적용한 서버는 TTFB는 0.224s, Start render 1.000s,Largest Contentful Paint 1.082s를 기록
- webpagetest.org에서 테스트 결과 보기
- 동시 테스트를 위해서 같은 콘텐츠 및 데이타베이스를 사용한 happist.com/casestudy를 테스트
기록을 보면 거의 같은 속도라고 할 수 있는데요. 위에서도 이야기한 것처럼 PHP 8 적용 서버는 Vultr의 상위 성능을 낸다는 High Performance 서버이고, 기존 PHP 7.4 적용은 Cloud Compute 서버입니다.
그렇기 때문에 High Performance 서버가 훨씬 더 고성능 서버라는 Vultr 주장과 PHP 8 성능 개선 주장을 반영한다면 을 반영하면 대로라면 당연하게도 PHP 8 적용 서버가 더 빨라야 합니다.
그런데 반대로 기존 서버가 TTFB가 더 빠르는 등 성능에서 거의 차이를 내지 못했습니다.
결론
결국 아직 PHP 8로 갈아탈 필요가 없고, 설령 갈아타도 문제만 많으며 속도도 더 빨라 지지는 않는다는 결론에 이르렀습니다.
그래서 아쉽지만 가장 최신 것을 사용하고자 하는 욕심은 버리기로 했습니다.
참고
PHP 25년 역사의 새장을 여는 PHP 8 설치 방법 – 우분투 및 데비안 기준
[워드프레스 최적화] 한층 빨라진 최신 php 7.3 설치 방법
[워드프레스 최적화] 보안과 서버 속도 개선을 위한 php 7.2 설치 방법 및 주의 사항
더 빠른 워드프레스를 위한 PHP 7.1 업그레이드 방법
서버 운영 관련
가성비가 뛰어난 Vultr 가상서버호스팅(클라우드호스팅,VPS) 사용기
Vultr 가상서버호스팅의 새상품 High Frequency 사용기
가상 서버를 운영하고픈 勇者에게 전하는 가상 서버 운영 입문 노하우 – Vultr 가상서버호스팅(VPS)를 중심으로
해외 가상서버호스팅(VPS)이 국내 호스팅보다 빠르다? – 아이비호스팅과 해외 가상서버호스팅 VULTR간 비교
사이트 운영을 위한 안내 – 웹서버 세팅에서 워드프레스 설치까지(우분투 17.10, NGINX 1.13.6, Marian DB 10.2, PHP7.2)
워드프레스 최적화를 위한 18개월간의 고민, 그 노하우를 담다.
새롭게 뉴스레터를 시작했습니다.
1️⃣ 주식 등 투자 정보 : 기업 분석, IB 투자의견 등 투자 관련 내용
..... 테슬라 실적 및 IB들의의 테슬라 투자의견
2️⃣ 사례 및 트렌드 : 사례연구와 트렌드 관련 괜찮은 내용
.....유튜브와 경쟁대신 구독 전환한 비디오 플래폼 비메오 사례