• 【Azure Redis 缓存】Azure Cache for Redis 中如何快速查看慢指令情况(Slowlogs)


    问题描述

    当 Azure Redis 服务器负载过高的情况下,使用时就会遇见连接超时,命令超时,IO Socket超时等异常。为了能定位是那些因素引起的,可以参考微软官方文档( 管理 Azure Cache for Redis 的服务器负载 : https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-best-practices-server-load#avoid-long-running-commands) 开始以下因素的分析:

    1. 值大小可以通过Redis-cli.exe 的bigkeys来进行分析 [redis-cli.exe -h yourcachename.redis.cache.chinacloudapi.cn -p 6379 -a YourAccessKey  --bigkeys ]

    1. 避免出现客户端连接高峰 : 可以查看Redis Metrics中的连接数
    2. 内存压力 : 通过查看Redis Metrics中的内存使用量
    3. 避免长时间运行的命令 : 通过Azure Redis门户上的console或者是Redis-cli.exe 来执行 slowlog get 100指令

    本文就重点演示在Azure Redis门户上的console页面执行  slowlog get 100  指令。

    问题回答

    因为Redis 服务器是单线程系统。 长时间运行的命令(官名:慢指令, Slowlog)可能导致客户端出现延迟或超时,因为服务器在忙于处理长时间运行的命令时无法响应任何其他请求。那么,如何来查看慢指令呢?

    第一步: 登录Azure门户,选择需要查看的Redis服务,进入Console页面

    第二步:在Console命令页输入:slowlog get 100

    • slowlog get 100: 获取当前Redis服务中所记录的慢指令信息,每一个指令包含六部分内容,id,unix时间,指令执行时间(ms 微秒), 指令内容,客户端IP:端口,客户端机器名。
    • slowlog len : 返回当前Redis服务器中所记录的慢指令日志中所记录指令数
    • slowlog reset  :清空当前慢指令记录

    指令输出示例:

    Welcome to secure redis console!
    
    This console connects to your live redis server and all commands are run on the server.
    
    WARNING: Use expensive commands with caution as they can impact your server load!
    
    >slowlog get 100
     1) 1) (integer) 16
        2) (integer) 1639993957
        3) (integer) 10012
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:14835"
        6) ""
     2) 1) (integer) 15
        2) (integer) 1639993727
        3) (integer) 10195
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:19468"
        6) ""
     3) 1) (integer) 14
        2) (integer) 1639992068
        3) (integer) 13279
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:46504"
        6) ""
     4) 1) (integer) 13
        2) (integer) 1639990412
        3) (integer) 14152
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:39900"
        6) ""
     5) 1) (integer) 12
        2) (integer) 1639990251
        3) (integer) 10710
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:52381"
        6) ""
     6) 1) (integer) 11
        2) (integer) 1639989209
        3) (integer) 11665
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:38779"
        6) ""
     7) 1) (integer) 10
        2) (integer) 1639989142
        3) (integer) 13642
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:12348"
        6) ""
     8) 1) (integer) 9
        2) (integer) 1639988822
        3) (integer) 22073
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:51454"
        6) ""
     9) 1) (integer) 8
        2) (integer) 1639988414
        3) (integer) 13668
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:1550"
        6) ""
    10) 1) (integer) 7
        2) (integer) 1639987239
        3) (integer) 18846
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:57350"
        6) ""
    11) 1) (integer) 6
        2) (integer) 1639986196
        3) (integer) 12921
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:1739"
        6) ""
    12) 1) (integer) 5
        2) (integer) 1639986196
        3) (integer) 15833
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:1739"
        6) ""
    13) 1) (integer) 4
        2) (integer) 1639985175
        3) (integer) 14434
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:1649"
        6) ""
    14) 1) (integer) 3
        2) (integer) 1639984227
        3) (integer) 61332
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:24878"
        6) ""
    15) 1) (integer) 2
        2) (integer) 1639984227
        3) (integer) 27560
        4) 1) "GET"
           2) "key:__rand_int__"
        5) "167.220.233.137:7637"
        6) ""
    16) 1) (integer) 1
        2) (integer) 1639983695
        3) (integer) 10361
        4) 1) "SET"
           2) "Message_dd2_0"
           3) "eyJ0eXAiOiJKV1QiLCJub25jZSI6Inp1d2hMNzhSWDJsdGZITlN1TDYyOEhpRDNrTzhWSnJXZl9CNEtVcjBFTWsiLCJhbGciOiJSUzI1NiIsIng1dCI6IkpSNGxDdzkw... (4140520 more bytes)"
        5) "167.220.233.137:1166"
        6) "MININT-S4MGVOU"
    17) 1) (integer) 0
        2) (integer) 1639983310
        3) (integer) 16577
        4) 1) "SET"
           2) "Message_dd_2222"
           3) "eyJ0eXAiOiJKV1QiLCJub25jZSI6Inp1d2hMNzhSWDJsdGZITlN1TDYyOEhpRDNrTzhWSnJXZl9CNEtVcjBFTWsiLCJhbGciOiJSUzI1NiIsIng1dCI6IkpSNGxDdzkw... (7774 more bytes)"
        5) "167.220.233.137:58313"
        6) "MININT-S4MGVOU"
    >slowlog len
    (integer) 17
    >slowlog reset
    OK
    >slowlog len
    (integer) 0

    Each entry from the slow log is comprised of the following six values:

    1. A unique progressive identifier for every slow log entry.
    2. The unix timestamp at which the logged command was processed.
    3. The amount of time needed for its execution, in microseconds.
    4. The array composing the arguments of the command.
    5. Client IP address and port.
    6. Client name if set via the CLIENT SETNAME command.

    参考资料

    SLOWLOG GET [count]https://redis.io/commands/slowlog-get

    管理 Azure Cache for Redis 的服务器负载https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-best-practices-server-load#value-sizes

    当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

  • 相关阅读:
    [Django]Windows下Django配置Apache示范设置
    《职场》笔记20061119
    Python Django还是RoR,这是一个问题
    收集证据:fsjoy.com的流氓推广和幕后流氓主子[updated]
    爱尔兰网友邀请我对Dublin交通监视器进行手机端开发
    {基于Applet的J2ME模拟器}和{microemulator}[J2ME推荐]
    中国移动IM飞信0802上线新版本 试用手记
    [AsyncHandle]什么引发了ObjectDisposedException?
    百度的“搜索背后的人”的战略
    [Python]检查你的站点的人气
  • 原文地址:https://www.cnblogs.com/lulight/p/15712779.html
Copyright © 2020-2023  润新知