# 사이트 성능 및 APM

Source: https://support.kapsulehost.com/ko-kr/site-performance

Application Performance Monitoring(애플리케이션 성능 모니터링)는 WordPress 및 WooCommerce 사이트에서 사이트의 시간이 실제로 어디에 쓰이는지 알려줍니다: 응답 시간 백분위수, 가장 느린 URL, 가장 느린 데이터베이스 쿼리, 그리고 PHP가 얼마나 부하를 받고 있는지 보여줍니다. 이 가이드는 APM 활성화, 각 패널 읽는 법, 그리고 표시된 내용에 따른 조치 방법을 다룹니다.

## KPanel에서 APM 위치

1. [KPanel](https://kpanel.kapsulehost.com)에 로그인합니다.
2. 왼쪽 사이드바에서 **웹사이트**를 클릭한 다음 사이트를 클릭합니다.
3. 사이트의 왼쪽 메뉴에서 **성능**를 연 다음 **APM**을 엽니다.

직접 주소는 `/websites/<site-id>/performance`입니다.

![KPanel에서 사이트의 애플리케이션 성능 모니터링](https://support.kapsulehost.com/help/screenshots/site-performance.4533b9b8.webp)

> **Note:** APM은 요금제 권한 항목입니다. Managed WordPress Pro에 포함되어 있습니다. 다른 요금제에서는 이 페이지에 대시보드 대신 APM이 다루는 내용을 설명하는 업그레이드 패널이 표시됩니다. 이 패널이 보인다면 기능이 꺼져 있는 것이 아니라 현재 요금제에서는 사용할 수 없는 것입니다.

## APM 켜기

APM은 활성화하기 전까지는 꺼져 있습니다. 사용 가능한 요금제에서는 이 페이지에 **APM 활성화** 버튼이 있는 **애플리케이션 성능 모니터링** 카드가 표시됩니다.

활성화하면 PHP 워커 수준에서 경량 접속 로그와 느린 요청 추적기가 추가됩니다. 페이지에 아무것도 삽입하지 않으며 방문자의 요청에 어떤 부하도 추가하지 않으므로 항상 켜 두어도 안전합니다.

활성화되면 페이지에 켜진 날짜가 표시된 **APM 활성** 표시와 **Refresh** 버튼, **APM 비활성화** 버튼이 나타납니다. 지표는 실제 트래픽이 들어온 후에만 표시되므로, 트래픽이 적은 사이트는 한동안 **요청 대기 중**로 표시됩니다.

## 응답 시간

첫 번째 카드는 헤더에 요청 수와 캡처 시각이 표시되며, 지난 1시간 동안의 수치 네 가지를 담고 있습니다.

| 지표 | 의미 |
|---|---|
| 중앙값(P50) | 요청의 절반이 이보다 빨랐습니다 |
| P95 | 요청의 95%가 이보다 빨랐습니다 |
| P99 | 요청의 99%가 이보다 빨랐습니다 |
| 5xx 오류율 | 서버 오류로 실패한 요청의 비율 |

각 타일은 임계값을 몰라도 상태를 바로 알 수 있도록 색으로 구분되어 있습니다.

백분위수는 따로가 아니라 함께 읽어야 합니다. 중앙값은 양호한데 P95가 매우 나쁘다면, 대부분의 요청은 정상이지만 소수가 매우 느리다는 의미이며, 이는 하나의 느린 페이지, 하나의 느린 쿼리, 또는 특정 URL에서 캐시가 미스되는 전형적인 신호입니다. 중앙값 자체가 나쁘다면 사이트 전체가 느리다는 뜻이며, 원인은 보통 구조적인 문제입니다: 요금제 용량 부족, 무거운 테마, 또는 캐싱이 꺼져 있는 경우입니다.

5xx 오류율은 0이어야 하는 유일한 수치입니다. 0보다 지속적으로 높다면 방문자가 오류를 겪고 있다는 뜻입니다.

## PHP 워커

**PHP 워커** 카드에는 세 가지 수치가 표시됩니다:

- **활성 워커**: 현재 요청을 처리 중인 PHP 프로세스 수입니다.
- **느린 요청**: 느린 요청 임계값을 초과해 기록된 요청 수입니다.
- **총 처리됨**: 풀이 시작된 이후 수락된 연결 수입니다.

활성 워커 수는 포화 상태를 나타내는 신호입니다. 일반적인 트래픽에서도 상한선 근처에 계속 머물러 있다면 요청이 PHP 뒤에서 대기하고 있다는 뜻이며, 위 카드의 모든 응답 시간에는 대기 시간이 일부 포함되어 있는 것입니다. 이는 코드 문제가 아니라 용량 문제이며, 해결책은 더 큰 요금제를 사용하거나 요청당 작업량을 줄이는 것입니다.

요청량이 안정적인데도 느린 요청 수가 계속 증가한다면 무언가가 무거워졌다는 뜻입니다.

## 가장 느린 엔드포인트

이 카드는 P95 응답 시간을 기준으로 가장 느린 URL을 나열하며, 각 항목에는 막대그래프, 밀리초 단위의 P95, 수신한 호출 수가 함께 표시됩니다. 색상은 가장 문제가 되는 항목을 표시합니다.

이것을 순위표가 아니라 요주의 목록으로 읽으세요. 중요한 것은 느리면서 동시에 자주 호출되는 항목입니다: 4초가 걸리지만 하루에 두 번 호출되는 페이지보다, 900밀리초가 걸리지만 만 번 호출되는 페이지가 훨씬 중요합니다.

흔한 원인:

- 인덱스 없이 스캔하는 **검색 페이지**.
- 요청마다 대규모 쿼리를 생성하는 **카테고리 및 아카이브 목록**.
- 방문자마다 다르기 때문에 절대 캐시되지 않는 **장바구니, 결제, 계정 페이지**. 어떤 경로가 설계상 캐시를 우회하는지는 [사이트 캐싱](https://support.kapsulehost.com/ko-kr/site-cache)을 참고하세요.
- 항상 동적인 **관리자 URL**.
- 요청 내부에서 **외부 API를 호출하는 모든 항목**. 이 경우 측정하는 것은 사실상 다른 서버의 성능입니다.

## 느린 쿼리

**느린 쿼리** 카드는 데이터베이스 자체의 성능 데이터에서 가져온, 평균 100밀리초를 넘는 데이터베이스 쿼리를 나열합니다. 각 행에는 평균 시간, 최대 시간, 호출 횟수, 정규화된 쿼리 텍스트가 표시됩니다.

쿼리 텍스트는 리터럴 값이 제거된 다이제스트이므로, 매개변수만 다른 동일한 쿼리는 하나의 행으로 그룹화됩니다. 이 때문에 호출 횟수가 의미 있는 값이 됩니다.

느린 쿼리를 해결하는 방법은 보통 세 가지 중 하나입니다: 쿼리에 필요한 인덱스를 추가하거나, 결과를 캐싱해 쿼리 실행 빈도를 줄이거나, 해당 쿼리를 생성하는 플러그인을 제거하는 것입니다. 호출 횟수가 매우 많고 평균 시간이 중간 정도인 쿼리는, 한 번의 극단적인 이상치보다 전체적으로 더 큰 영향을 주는 경우가 많습니다.

엔드포인트 목록과 쿼리 목록이 모두 비어 있다면, 카드에는 느린 요청이 감지되지 않았다는 메시지가 표시되며, 이는 지난 1시간 동안 모든 것이 정상 임계값 이내였다는 뜻입니다.

## APM 제대로 사용하기

**기준선을 확보하세요.** 사이트가 정상일 때의 수치를 확인해 두면 정상 상태가 어떤 모습인지 알 수 있습니다. P95가 700밀리초라는 수치는, 예전에 300밀리초였다는 것을 알기 전까지는 아무 의미가 없습니다.

**한 번에 하나씩만 변경하세요.** 캐시를 활성화하고, 새로고침한 다음 비교하세요. 의심되는 플러그인을 비활성화하고, 새로고침한 다음 비교하세요. 한꺼번에 여러 가지를 바꾸면 어떤 신호도 얻을 수 없습니다.

**신중하게 새로고침하세요.** **Refresh** 버튼은 필요할 때 지표를 다시 읽어옵니다. 수치는 지난 1시간을 다루므로, 변경 사항을 판단하기 전에 약간의 시간을 두세요.

**APM 바깥도 살펴보세요.** APM은 애플리케이션을 측정합니다. 문제가 코드가 아니라 네트워크나 엣지 쪽에 있다면, [사이트 트래픽 분석](https://support.kapsulehost.com/ko-kr/site-analytics)과 [사이트 가동 시간 모니터링](https://support.kapsulehost.com/ko-kr/site-uptime-monitoring)에서 대신 확인할 수 있습니다.

## 문제 해결

**페이지에 업그레이드 패널이 표시됩니다.** APM은 Managed WordPress Pro에 포함되어 있습니다. 다른 요금제에서는 사용할 수 없습니다.

**APM은 켜져 있는데 지표가 없습니다.** 아직 트래픽이 없는 것입니다. 사이트가 요청을 받기 시작하면 지표가 표시됩니다.

**APM에서는 응답 시간이 정상인데 사이트는 느리게 느껴집니다.** APM은 서버 측 시간만 측정합니다. 이미지 다운로드, 자바스크립트 실행, 브라우저에서의 폰트 로딩에 걸리는 시간은 여기에 나타나지 않습니다. 서버 시간이 양호한데도 사이트가 느리게 느껴진다면, 문제는 프런트엔드나 브라우저가 가져오도록 요청하는 내용 쪽에 있습니다.

**플러그인 업데이트 후 P95가 나빠졌습니다.** 가장 느린 엔드포인트 목록을 먼저 확인한 다음, 느린 쿼리 목록을 확인하세요. 모든 페이지 로드에 쿼리를 추가한 플러그인은 두 목록 모두에 나타납니다.

**항상 모든 것이 느립니다.** 먼저 PHP 워커의 포화 상태를 확인하세요. 워커가 상한에 고정되어 있다면, 다른 최적화를 하기 전에 용량을 늘리거나 요청당 작업량을 줄이세요.

**오류율이 0보다 높습니다.** 밀리초 단위를 신경 쓰기 전에 이 문제부터 해결하세요. 먼저 로그를 확인하고, 사이트의 **오류 페이지** 탭에 있는 **Troubleshoot with Kora** 버튼을 사용하면 Kora가 오류 로그와 최근 실패 내역을 대신 읽어 줍니다. [맞춤 오류 페이지](https://support.kapsulehost.com/ko-kr/site-error-pages)를 참고하세요.

## 관련 페이지

- [사이트 캐싱](https://support.kapsulehost.com/ko-kr/site-cache)은 보통 WordPress 사이트에서 가장 효과가 큰 단일 개선 방법입니다.
- 같은 사이트의 취약점 및 악성코드 스캔은 [사이트 보안](https://support.kapsulehost.com/ko-kr/site-security)을 참고하세요.
- 플러그인을 제거하기 전에 [백업하기](https://support.kapsulehost.com/ko-kr/taking-a-backup)를 참고하세요.
