Technote

성능 최적화 입문

연재 트래픽이 늘기 시작할 때 8부 중 1부

사이트가 처음 느려졌을 때 확인할 세 가지

느려짐은 갑자기 온 것처럼 보이지만 원인 목록은 짧습니다. 더 큰 서버를 결제하기 전에 순서대로 확인할 것이 세 가지 있습니다.

사이트가 잘되기 시작하면 가장 먼저 느껴지는 변화가 느려짐입니다. 어제까지 괜찮던 화면이 오늘은 한 박자 늦게 뜨고, 관리자 화면은 더 답답해집니다. 이때 많은 분이 곧장 서버 사양을 올리는데, 대개 그것이 원인이 아닙니다.

워드프레스는 잘 만들어진 도구입니다. 느려지는 것은 도구의 한계가 아니라, 사이트가 커진 만큼 구성이 따라가지 못한 상태입니다. 원인은 대체로 셋 중 하나이고, 순서대로 보면 대부분 30분 안에 짚입니다.

느려짐은 한 종류가 아닙니다

먼저 구분해야 할 것이 있습니다. “느리다” 는 말 안에는 성격이 다른 두 가지가 섞여 있습니다.

같은 "느림" 이라도 원인 계층이 다르다 — 어느 쪽인지 먼저 가른다

브라우저 개발자 도구의 네트워크 탭을 열고 페이지를 한 번 새로고침해 보세요. 첫 번째 요청(문서)이 오래 걸리는지, 아니면 그 뒤의 이미지 · 스크립트가 오래 걸리는지만 봐도 어느 쪽인지 갈립니다. 이 구분 없이 손대면 엉뚱한 곳을 고치게 됩니다.

확인 1 — 최근에 무엇이 늘었나

느려짐은 대개 변화 직후에 옵니다. 지난 몇 주 사이에 새로 설치한 플러그인, 새로 붙인 외부 스크립트(채팅 위젯 · 광고 · 통계 · 폰트), 새로 만든 대형 페이지가 있는지 떠올려 보세요.

특히 외부 스크립트는 조용한 원인입니다. 우리 서버가 아무리 빨라도 그 스크립트가 응답하지 않으면 화면이 그 자리에서 멈춥니다. 하나씩 잠시 꺼 보면서 체감이 달라지는지 확인하는 것이 가장 빠른 검증입니다.

확인 2 — 페이지가 무거워졌나

콘텐츠가 쌓이면 페이지도 함께 무거워집니다. 특히 원본 크기 그대로 올린 사진 몇 장이 한 페이지에 있으면 그것만으로 체감이 크게 바뀝니다. 촬영 원본은 화면에 필요한 크기보다 훨씬 크고, 줄여서 올리는 습관 하나가 가장 값싼 성능 개선입니다.

목록 페이지도 봅니다. 한 화면에 글을 수십 개씩 불러오면 그만큼 데이터베이스가 일합니다. 한 페이지에 보여 줄 개수를 줄이는 것만으로 나아지는 경우가 많습니다.

확인 3 — 매번 처음부터 다시 만들고 있나

세 번째가 가장 흔하고, 가장 크게 개선되는 항목입니다. 기본 상태의 워드프레스는 방문자가 올 때마다 페이지를 새로 조립합니다. 방문자가 적을 때는 문제가 아니지만, 늘어나면 같은 계산을 수천 번 반복하게 됩니다.

이 반복을 없애는 것이 캐시이고, 대개 여기서 가장 큰 폭의 개선이 나옵니다. 다음 회차의 주제이기도 합니다.

서버를 키우는 것은 마지막입니다

사양을 올리면 분명 나아집니다. 다만 그것은 같은 낭비를 더 비싼 장비로 감당하는 방식이라, 다음 성장 구간에서 같은 문제가 다시 옵니다. 위 셋을 먼저 정리한 뒤에도 부족하다면 그때 올리는 것이 순서입니다.

성능을 계층별로 다루는 글은 성능 최적화 아카이브에 모여 있고, 원인 진단부터 캐시 구성까지 한 번에 맡기고 싶다면 최적화 지원 사업에 진단과 전후 측정이 함께 포함됩니다.

다음 회차

다음 회차는 캐시입니다. “캐시를 켜면 빨라진다” 는 설명은 절반만 맞습니다 — 캐시는 하나가 아니라 하는 일이 다른 계층 여럿이고, 그 차이를 알아야 잘못 겹치지 않습니다.

이 주제의 다른 글

노하우 목록으로

성능 최적화 실무

태그 하나가 더하는 밀리초는 누가 냅니까

추적 스크립트는 내려받고 끝나지 않습니다. 파싱과 실행이 메인 스레드를 점유하는 동안 페이지는 손가락에 반응하지 않습니다. 그 비용은 직접 잴 수 있습니다.

마케터 3분 읽기

₩270,000 · 신청하기