Redis 느린 쿼리는 명령 실행 시간이 상대적으로 긴 쿼리를 말합니다. 느린 쿼리 로그는 Redis 서버가 명령 실행 전후에 각 명령의 실행 시간을 계산하여 특정 임계값을 초과하는 경우입니다. 로그에 기록됩니다. 느린 쿼리가 발생한 시간과 실행 시간, 특정 명령 및 기타 정보가 표시됩니다.
추천: "redis 튜토리얼"
느린 쿼리는 이름 그대로 상대적으로 느린 쿼리인데, 정확히 어디에서 느린가요? 먼저 Redis 명령 실행의 전체 과정을 이해해보자:
느린 쿼리의 정의에서 통계가 상대적으로 느린 기간 이 단계를 실행하는명령입니다. 느린 쿼리가 없다고 해서 클라이언트에 시간 초과 문제가 없다는 의미는 아닙니다. 네트워크 전송이 지연되거나 대기 중인 명령이 더 있을 수 있습니다.
Redis의 명령 실행 대기열 메커니즘으로 인해 쿼리가 느리면 다른 명령이 계단식으로 차단됩니다. 따라서 클라이언트에서 요청 시간이 초과되면 해당 시점에 느린 쿼리가 있는지 확인해야 합니다. 느린 쿼리로 인한 문제를 분석합니다. 느린 쿼리 로그란 무엇인가요? 느린 쿼리 로그는 Redis 서버가 명령 실행 전후에 각 명령의 실행 시간을 계산하여 특정 임계값을 초과하는 경우 기록하는 로그입니다. 로그에는 느린 쿼리가 발생한 시간은 물론 실행 시간, 특정 명령 및 기타 정보가 기록되어 개발 및 운영 및 유지 관리 담당자가 시스템에 존재하는 느린 쿼리를 찾는 데 도움이 될 수 있습니다. 느린 쿼리 로그를 얻는 방법은 무엇입니까?slowlog get
명령을 사용하여 느린 쿼리 로그를 얻을 수 있습니다. 또한
slowlog get
뒤에 숫자를 추가하여 가져올 느린 쿼리 로그 수를 지정할 수도 있습니다. 예를 들어 3개의 느린 쿼리 로그를 가져옵니다.
> slowlog get 3 1) 1) (integer) 6107 2) (integer) 1616398930 3) (integer) 3109 4) 1) "config" 2) "rewrite" 2) 1) (integer) 6106 2) (integer) 1613701788 3) (integer) 36004 4) 1) "flushall" 3) 1) (integer) 6105 2) (integer) 1608722338 3) (integer) 20449 4) 1) "scan" 2) "0" 3) "MATCH" 4) "*comment*" 5) "COUNT" 6) "10000"
slowlog get
命令获取慢查询日志,在
slowlog get
后面还可以加一个数字,用于指定获取慢查询日志的条数,比如,获取3条慢查询日志:
> slowlog len (integer) 121
从上面的例子中,可以看出每一条慢查询日志都有4个属性组成:
可以使用slowlog len
命令获取慢查询日志的长度,比如:
> slowlog len (integer) 121 > slowlog reset OK > slowlog len (integer) 0
在上例中,当前Redis中有121条慢查询日志。
可以使用slowlog reset
위의 예에서 각 느린 쿼리 로그는 4개의 속성으로 구성되어 있음을 알 수 있습니다.
slowlog len
명령을 사용하면 느린 쿼리 로그의 길이를 확인할 수 있습니다. 예:
slowlog-log-slower-than 1000 slowlog-max-len 1200
slowlog 재설정
명령을 사용하여 느린 쿼리 로그를 지울 수 있습니다. 예:
> config set slowlog-log-slower-than 1000 OK > config set slowlog-max-len 1200 OK > config rewrite OK
느린 쿼리 로그 수를 저장합니다.
slowlog-log-slower-than
slowlog-log-slower-than은 명령 실행 시간의 임계값을 지정하는 데 사용됩니다. 명령 실행 시간이 이 임계값을 초과하면 기록됩니다. 단위는 마이크로초(1초 = 1000밀리초 = 1000000마이크로초)이며 기본값은 10000마이크로초입니다. Slowlog-log-slower-than이 0으로 설정되면 모든 명령이 기록됩니다. Slowlog-log-slower-than이 0보다 작게 설정되면 로그에 명령이 기록되지 않습니다. 실제 프로덕션 환경에서는 Redis 동시성에 따라 이 구성을 조정해야 합니다. Redis는 단일 스레드를 사용하여 명령에 응답하므로 명령 실행 시간이 1000마이크로초를 초과하는 경우 Redis는 최대 1000OPS 미만을 지원할 수 있습니다. 따라서 높은 동시성 시나리오에서는 Redis를 1000마이크로초로 설정하는 것이 좋습니다. . slowlog-max-lenslowlog-max-len은 저장할 느린 쿼리 로그의 최대 개수를 지정하는 데 사용됩니다. 실제로 Redis는 느린 쿼리 로그를 저장하기 위해 목록을 사용하며, 이 목록의 최대 길이는 Slowlog-max-len입니다. 새 명령이 느린 쿼리 조건을 충족하면 이 목록에 삽입됩니다. 느린 쿼리 로그 목록이 최대 길이에 도달하면 가장 먼저 삽입된 명령이 목록에서 제거됩니다. 예를 들어, Slowlog-max-len은 10으로 설정됩니다. 11번째 명령이 삽입되면 목록의 첫 번째 명령이 먼저 제거되고 11번째 명령이 목록에 추가됩니다. 느린 쿼리를 기록한다는 것은 Redis가 긴 명령을 자르고 많은 양의 메모리를 차지하지 않는다는 것을 의미합니다. 실제 프로덕션 환경에서는 느린 쿼리가 제거될 가능성을 줄이고 느린 쿼리를 보다 편리하게 찾기 위해 느린 쿼리 로그의 길이를 크게 조정하는 것이 좋습니다. 예를 들어 1000 이상으로 설정할 수 있습니다. 구성 방법Redis에서 구성을 수정하는 방법에는 두 가지가 있습니다.slowlog-log-slower-than 1000 slowlog-max-len 1200
config set
命令动态修改。比如,还是把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:> config set slowlog-log-slower-than 1000 OK > config set slowlog-max-len 1200 OK > config rewrite OK
如果要Redis把配置持久化到本地配置文件,需要执行config rewrite
命令。
慢查询指的是命令执行时长比较长的查询。通过slowlog get命令获取慢查询日志;通过slowlog len命令获取慢查询日志的长度;通过slowlog reset命令清理慢查询日志。通过slowlog-log-slower-than配置命令执行时长的阈值;通过slowlog-max-len配置慢查询日志最多存储的条数
위 내용은 Redis 느린 쿼리 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!