redis는 많은 트래픽을 처리할 수 있기 때문에, redis에 문제가 생기면 전체 성능 저하로 이어질 수 있다.
info all명령으로 정보를 수집할 수 잇는 redis 자체의 메트릭
대항목 | 항목 | 내용 |
---|---|---|
memory | used_memory_rss | redis가 현재 사용하고 있는 실제 물리 메모리 양. 실제 메모리 사용량이 많으면 swap이 일어나서 성능이 떨어진다. |
used_memory | 현재 redis가 계산하고 있는 사용 메모리 양. malloc의 값을 저장하고 있다가 보여준다. redis가 할당을 요청한 메모리의 양. | |
mem_fragmentation_ratio | used_memory와 used_memory_rss의 비율.비율이 1보다 높으면 swap이 발생하고 있다고 보면 된다. | |
instantaneous_ops_per_sec | 초당 실행 명령수. redis는 cpu의 영향을 받으므로, 더 성능이 좋은 cpu를 쓰면 명령처리량이 늘어난다. per_sec이 낮다는건 실제로 트래픽이이 작을수도 있고, 처리하는데 오래걸리는 명령을 실행해서 전체적으로 처리하는 양이 줄어들수도 있다. | |
total_commands_processed | 지금까지 처리한 명령 수 | |
expired_keys | 지금까지 expireation이 발생한 이벤트 수 | |
keyspace_hits | 캐시 hit수 | |
keyspace_misses | cache miss count | |
clients | connected_clients | 현재 접속해있는 클라이언트 수. redis는 싱글 스레드 기반이라 클라이언트가 지속적으로 연결/연결 해제할 경우 성능이 떨어지므로 해당 값이 크게 계속 바뀌면, 성능이 떨어진다. |
maxclients | 접속할 수 있는 최대 클라이언트의 수 | |
replication | master_repl_offset | primary의 replication offset |
slave_repl_offset | secondary의 replication offset. replica에만 존재하고, master_repl_offset - slave_repl_offset이 현재 replication lag이다 |
os
메모리 파편화 일어나면 used_memory가 4기가인데, rss는 12기가일수 있다. used memory보다 rss값을 보는게 중요
info all 명령의 commandstats 파트를 확인한다.
O(n) 관련 명령의 calls와 usec_per_call이 증가하는지를 확인해야 한다.