블로그

PHP 유지보수

[워드프레스] 속도 측정 – 모니터링과 진단

안녕하세요 ?
국내 유일의 무료 워드프레스 쇼핑몰 “우커머스 교실”에서 사용하고 있는, 워드프레스 속도 최적화 측정 방법에 대해 알아 보도록 하겠습니다.
다른 국가 사람들과 비교되는 한국인의 가장 중요한 문화 코드는 ‘빨리빨리’입니다. 그러한 ‘빨리빨리 문화’는 부작용도 많았지만 한국의 경제를 단 시간내에 세계 14위의 경제 규모로 키워낸 원동력이 되었습니다. 이런 환경의 인터넷 사용자는 웹사이트가 1~2초 안에 페이지가 뜨지 않으면 느리다면서 창을 닫는 경우가 많습니다.
그런데 워드프레스는 블로그, CMS(Contents Management System 저작물 관리 시스템) 중에서도 콜백함수(Callback function) 이라는 방법을 많이 사용하므로 해당 함수를 더 많이 사용할수록 속도가 느려지는 특성을 가지고 있습sl다. 유연한 프로그램 개발을 위한 플러그인의 장점인 콜백이 결국 속도 저하의 원인 제공을 하게 된 것이지요.
오늘 포스팅할 내용은 “워드프레스 속도가 느려지면 이러이러한 플러그인을 설치해봐라”라는 무책임한 제안이 아닌 속도 저하의 원인과 그 해결 방법을 찾아갈 수 갈 수 있도록 길잡이를 제시하는 것입니다.

1. 웹사이트 속도를 측정하는 기준
실제 웹사이트 방문자들이 체감하는 웹사이트 속도는 크게 2가지의 요소로 정리합니다.
(1) 다운로드 속도
웹사이트 다운로드 속도란 페이지 로딩 속도라고도 하는데 웹사이트의 이미지 화일을 포함하는 정적인 컨텐츠( Static Contents ) 인 Html, Javascript, Css 화일이 다운 로드되는 속도를 말합니다. 웹페이지를 웹브라우져에 로딩하는 시간입니다. 가장 큰 영향을 미치는 이미지와 Html이나 Javascrip, css 가 웹브라우져에서 다운로드 되는 속도와 관계됩니다.
(2) 웹서버 부하 감소
웹사이트의 동적인 요소인 데이터베이스 쿼리와 쿼리된 데이터를 조작해서 Html로 보여주는 일련의 과정에서 서버의 부하가 일어납니다. 결국 서버 부하의 대부분은 Mysql 이라는 데이터베이스에서 쿼리하는 데이터의 량과 속도에 영향을 받습니다.
2. 다운 로드 속도의 측정
일단 다운 로드의 경우 속도 측정을 어떤 요소가 속도에 영향을 미치고 있는가가 중요한 요소입니다. 잘 알려진 속도 측정 사이트를 소개합니다.
(1) 핑덤
핑덤은 전 세계적으로 사이트 속도 측정을 위해 가장 많이 이용되는 사이트 중 하나이며, 측정했던 기록이 남기 때문에, 보완 후 다시 측정 했을 때 얼마나 효과가 있었는지도 확인 가능 합니다. (2) 구글 페이지 스피드
웹사이트의 다운 로드 속도를 즉정하는 도구로써는 Google 의 PageSpeed 가 있습니다. 구글 스피드 인사이트는 구글에서 제공하는 측정 사이트로, 속도 측정 결과와 함께 수정 해야할 사항들을 표시해 줍니다. (3) GT 매트릭스
GT 매트릭스는 고정된 위치(IP)가 아닌 각 국가의 위치에서 속도를 측정해줍니다. 즉, 글로벌 유저를 표적고객으로 하는 웹사이트에를 테스트 하기에 적절한 사이트 입니다. 해당 웹사이트들은 대부분의 웹사이트 측정을 하는 웹사이트는 다운 로드 속도 이상을 측정해주지는 않습니다. 그 이유는 웹사이트 다운로드 속도 측정은 웹서버 내부의 Database 엑세스와 Apache 나 NginX와 같은 Php와 같은 동적으로 컨텐츠를 구성하는 과정을 측정해내지는 못하기 때문입니다.
또한 이미지 최적화에 대한 수준도 이미지실제 사이즈와 웹페이지상의 사이즈를 비교하여 실제 썸네일의 이미지 화일이 제대로 축소된 썸네일 화일로 보여지고 있는가를 측정해서 보여주기 때문에 CDN을 통한 네트워크 부하 감소 및 서버 부하 감소를 측정해주지는 않습니다.
따라서 위에 언급한 사이트들을 이용하여 다운로드 속도의 상대적인 기준으로 평가하되 절대적 기준으로 정하지는 않으셔야 합니다.
이미지 최적화의 고급 기술 중 Image Polishing 이라는 이미지의 화질이 떨어지지 않므면서 이미지의 크기를 축소하여 웹브라우즈에 다운로드하는 기술이 있는데 이런 방법을 채용하면 최대 80%까지 이미지 다운로드량을 압축할 수 있습니다. https://www.symphonysoft.co.kr는 이미지 압축 기술인 Polishing 기술이 웹사이트에 적용되어 실시간으로 적용되어 압축된 이미지가 네임 서버에서 직접 다운로드되는 방식을 취하고 있어 다운로드 속도가 타 우커머스 사이트에 비할 수 없이 빠릅니다.
3. 서버 부하 측정
웹서버 부하 측정으로 들어가면 이제 양상은 상당이 복잡해지기 시작합니다. 워드프레스 기술 구조중 가장 강점 중에 하나인 유연한 플러그인(Plugin) 개발 기법은 워드프레스를 통한 무한한 기능 확장이 용이하게 될 수 있도록 만들어져서 워드프레스를 전 세계 CMS 툴 분야에서 사실상을 표준을 만들수 있는 일등공신이 되었습니다. 하지만 강점이 있으면 그것으로 인한 약점도 생기는 법이지요. 워드프레스 플러그인에서 주로 사용하는 Calllback 함수 (보통 Hook이라고 부르기도 합니다.)가 특성상 미리 로직을 로딩하여 컴파일 해둔 상태에서 한 페이지가 실행되는 상황에 따라 사용 여부를 결정하는 방식이므로 자연적으로 서버 부하가 상대적으로 많이 발생하는 구조입니다.
사실은 그리고 각 플러그인들은 대부분의 메인 페이지는 웹사이트의 root 폴더의 index.php에 모두 include되어 컴파일되는 방식으로 만들어져 있으므로 플러그인 개발자가 플러그인 개발시 최적화에 공을 들이지 않으면 하나의 플러그인이 웹서버 부하를 크게 발생시켜 버립니다. 또한 개별 웹 페이지가 실행될 때 마다 각 플러그인의 세팅 정보를 읽어 내어야 하는데 그 개별 정보 하나 하나가 wp-options라는 하나의 테이블 한 레코드에 저장되도록 구성되어 있으므로 많은 수의 Mysql Query를 발생시켜 버립니다.
대체적으로 워드프레스에서 한 페이지를 보여줄 때 80~200개 정도의 쿼리가 발생되는데 MySql에서 데이터를 가져오는데 이 숫자가 많을수롤 서버 부하는 증가되는 것입니다. 그래서 워드프레스의 속도는 사실 이 쿼리의 갯수를 최대한 적게하고, 쿼리 속도를 최대한 빠르게 만드는 것이 가장 중요한 관건이 되는 것입니다. 그래서 Mysql를 워드프레스에 적합하도록 튜닝하는 것이 중요한 이슈가 되지만 실제 그럴만한 기술를 가진 사람을 찾기란 힘든 상황입니다. 대체적으로 Php Version 5.x 대에서 Php 7으로 업그레이드 한 경우라도 만족스러운 결과가 나오지 않는 것은 근본적으로 워드프레스가 Mysql을 혹사시키고 있다고 예상되기 때문입니다.
지금까지 다보리에서 워드프레스로 개발된 웹사이트를 호스팅하면서 발견된 재미있는 사항을 서버 사양을 높힌다 하여도 한번 잘못 개발된 플러그인을 사용하고 있는 경우 특별한 개선책이 나오지 않았다는 것입니다. 따라서 가장 고질적인 문제인 서버 부하의 감소를 위하여 플러그인과 테마의 효율성을 확보하는 것에 다름아닌 것입니다.
4. P3(Plugin Performance Profiler)으로 플러그인 부하 측정
일단 플러그인의 속도 진단은 되어야 하므로 플러그인 속도 진단 플러그인을 소개합니다.
P3 (Plugin Performance Profiler) 플러그인을 사용하면 플러그인에 대한 진단 문제를 쉽게 해결 가능한데 자세히 살펴보면 제작사가 GoDaddy라는 미국의 가장 큰 웹호스팅사로 되어 있습니다. 다른 곳도 아닌 웹호스팅사가 뭐가 답답해서 이런 것을 만들었을까요 ? 이것은 웹호스팅사가 워드프레스 호스팅 때문에 많은 골머리를 앓고 있다는 것을 명백히 보여주는 것입니다. 공통으로 사용하는 웹서버에 서버 부하를 심하게 가져가는 워드프레스 웹호스팅이 그렇게 환영받지 못한다는 것입니다.
실제 미국의 내노라하는 웹호스팅사가 워드프레스 전용 웹호스팅 상품을 공격적으로 영업하지 않는 이유가 이런 문제점이 있기 때문이 아닐까 하고 생각해 보았습니다.
[Wordpress Optimization]_P3-Plugin-Performance-Profiler-Result▲ P3 (Plugin Performance Profiler) 스캔시 부하의 퍼센티지와 실행시간을 보여주므로써 어떤 플러그인에서 많은 부하가 발생하는지를 보여줍니다.
아래를 살펴보면 우커머스와 다보리-통합 플러그인 간의 비교치가 나옵니다. 다보리 통합-플러그인은 14 정도의 플러그인이 통합된 결과물로써 해당 플러그인의 총합보다 3/4 정도 서버 부하량을 줄여주고 있습니다.
P3-다이아그램 그래서 이 도표는 다보리에서 영리하게도 우커머스용 플러그인을 통합함으로서 얻을 수 있었던 속도 개선 효과를 잘 보여주고 있다고 할 수 있습니다.

구분 다보리 플러그인에 통합된 기능
다보리 개발
필수 플러그인
(1)다보리-멤버스 II
(2)한국형 주소 찾기
(3)소셜 로그인/휴면 계정관리
(4)국가별 보안차단
(5)네이버 블로그 자동등록

다보리 개발
우커머스 필수
플러그인
(6)신용카드 PG 결제
    페이앱, LGU+, 카카오페이, KCP, 이니시스,
    나이스정보. JT-Net, 올더게이트
(7)배송 추적
(8)바로구매 버튼
(9)다보리 SMS
(10)무통장입금 자동 등록
(11)굿스플로 배송장 자동 출력 기능

6.Query Monitor 플러그인 을 통한 쿼리 성능 분석
Query Monitor 디버깅 플러그인 이긴 하지만 용도에 따라 훌륭한 쿼리 분석기가 될 수 있으며 워드프레스 사이트의 성능 개선을 위한 Intuition을 제공합니다. 예를 들면 플러그인 설치후 Php warning 와 Slow Query 를 분석하여 추가된 플러그인이나 기능 또는 웹폰트 추가 등으로 사이트가 늦어지는 이유에 대한 영감을 얻을 수 있습니다
screenshot-1
7. 뉴렐릭(New Relic) Monitor 를 통한 워드프레스 사이트 성능 분석
뉴렐릭은 소프트웨어와 웹, 모바일 중심으로 급격히 변화한 서비스 구조를 가장 쉽고 효과적으로 모니터링하고 선제대응(Proactive) 할 수 있는 데이터를 제공하는 모니터링 플랫폼입니다. 뉴렐릭을 통하여 웹 서비스, 모바일 애플리케이션의 성능 개선과 문제점 확인, 복잡한 서버단의 구성요소들을 효과적으로 모니터링 할 수 있습니다.
뉴렐릭은 어플리케이션 레이어에서부터 서버단의 소프트웨어 레이어까지 복잡하고 다양한 주체들을 웹 기반의 통합 모니터링 도구를 이용하여 한 눈에 확인할 수 있도록 서비스를 제공하고 있습니다. 뉴렐릭은 웹서버단에 설치된 플러그인과 W3TC Plugin 과 통합된 개발한 워드프레스 플러그인을 통하여 지원할 수 있도록 되어 있습니다.
뉴렐릭은 서버단에서 플러그인이 설치 되어야 하므로 일반적인 웹호스팅 회사에서 제공되는 호스팅 서비스로는 사용할 수 없습니다. 다보리 워드프레스 웹호스팅에서는 2016년이내에 워드프레스에서의 뉴렐릭 모니터링 서비스를 제공하도록 하겠습니다.
1. MySQL Analysis
sql-detail
sql-slow
2. Monitoring the Performance of Third Party Plugins and APIs.
nr-mysql
3. Ajax and JavaScript
ajax-2

Leave a Reply

Your email address will not be published. Required fields are marked *