6.11. 메모리 사용량이 많은 문제 해결
다음 시나리오는 메모리 사용량이 높을 수 있습니다.
-
pmproxy
프로세스는 새로운 PCP 아카이브를 처리하는데 사용되며, Redis 요청 및 응답을 처리하는 예비 CPU 사이클이 없습니다. - Redis 노드 또는 클러스터는 과부하되어 입력되는 요청을 제때 처리할 수 없습니다.
pmproxy
서비스 데몬은 Redis 스트림을 사용하며 구성 매개변수인 PCP 튜닝 매개 변수이며 Redis 메모리 사용량 및 키 보존에 영향을 미칩니다. /etc/pcp/pmproxy/pmproxy.conf
파일에는 pmproxy
및 관련 API에 사용 가능한 구성 옵션이 나열됩니다.
다음 절차에서는 높은 메모리 사용 문제를 해결하는 방법을 설명합니다.
사전 요구 사항
pcp-pmda-redis
패키지를 설치합니다.# yum install pcp-pmda-redis
redis PMDA를 설치합니다.
# cd /var/lib/pcp/pmdas/redis && ./Install
절차
메모리 사용량이 높은 문제를 해결하려면 다음 명령을 실행하고
진행
열을 관찰합니다.$ pmrep :pmproxy backlog inflight reqs/s resp/s wait req err resp err changed throttled byte count count/s count/s s/s count/s count/s count/s count/s 14:59:08 0 0 N/A N/A N/A N/A N/A N/A N/A 14:59:09 0 0 2268.9 2268.9 28 0 0 2.0 4.0 14:59:10 0 0 0.0 0.0 0 0 0 0.0 0.0 14:59:11 0 0 0.0 0.0 0 0 0 0.0 0.0
이 열에는 진행 중 요청 수가 표시됩니다. 즉, 대기 또는 전송되었음을 의미하며 지금까지 응답이 수신되지 않았습니다.
높은 숫자는 다음 조건 중 하나를 나타냅니다.
-
pmproxy
프로세스는 새로운 PCP 아카이브를 처리하는데 사용되며, Redis 요청 및 응답을 처리하는 예비 CPU 사이클이 없습니다. - Redis 노드 또는 클러스터는 과부하되어 입력되는 요청을 제때 처리할 수 없습니다.
-
메모리 사용량이 많은 문제를 해결하려면 이 팜의
pmlogger
프로세스 수를 줄이고 다른 pmlogger 팜을 추가합니다. 페더레이션 - 여러 pmlogger 팜 설정을 사용합니다.Redis 노드에서 오랜 시간 동안 100% CPU를 사용하고 있는 경우 성능이 더 뛰어난 호스트로 이동하거나 클러스터형 Redis setup을 대신 사용하십시오.
pmproxy.redis.*
지표를 보려면 다음 명령을 사용합니다.$ pminfo -ftd pmproxy.redis pmproxy.redis.responses.wait [wait time for responses] Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff Semantics: counter Units: microsec value 546028367374 pmproxy.redis.responses.error [number of error responses] Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff Semantics: counter Units: count value 1164 [...] pmproxy.redis.requests.inflight.bytes [bytes allocated for inflight requests] Data Type: 64-bit int InDom: PM_INDOM_NULL 0xffffffff Semantics: discrete Units: byte value 0 pmproxy.redis.requests.inflight.total [inflight requests] Data Type: 64-bit unsigned int InDom: PM_INDOM_NULL 0xffffffff Semantics: discrete Units: count value 0 [...]
진행 중인 Redis 요청 수를 보려면
pmproxy.redis.requests.inflight.total
메트릭 및pmproxy.redis.requests.inflight.bytes
메트릭을 참조하여 현재 inflight Redis 요청에 의해 사용되는 바이트 수를 확인합니다.일반적으로 redis 요청 대기열은 0이지만 대규모 pmlogger 팜을 사용하여 빌드할 수 있으며 이는 확장성을 제한하고
pmproxy
클라이언트에 대한 높은 대기 시간을 초래할 수 있습니다.pminfo
명령을 사용하여 성능 지표에 대한 정보를 봅니다. 예를 들어redis.*
메트릭을 보려면 다음 명령을 사용합니다.$ pminfo -ftd redis redis.redis_build_id [Build ID] Data Type: string InDom: 24.0 0x6000000 Semantics: discrete Units: count inst [0 or "localhost:6379"] value "87e335e57cffa755" redis.total_commands_processed [Total number of commands processed by the server] Data Type: 64-bit unsigned int InDom: 24.0 0x6000000 Semantics: counter Units: count inst [0 or "localhost:6379"] value 595627069 [...] redis.used_memory_peak [Peak memory consumed by Redis (in bytes)] Data Type: 32-bit unsigned int InDom: 24.0 0x6000000 Semantics: instant Units: count inst [0 or "localhost:6379"] value 572234920 [...]
최대 메모리 사용량을 보려면
redis.used_memory_peak
지표를 참조하십시오.
추가 리소스
-
pmdaredis(1),
pmproxy(1)
및pminfo(1) 도움말
페이지 - PCP 배포 아키텍처