Redis响应严重延迟,如何解决?( 二 )


# 案例插入5000条数据 , 在实践时可以根据磁盘的类型适当调整 , 比如使用SSD时可以调大 , 而HDD可以适当调小
$ curl http:{"elapsed_seconds":30.26814079284668,"keys_initialized":5000}继续执行下一个命令 , 访问应用的缓存查询接口 。如果一切正常 , 你会看到如下输出:
$ curl http:{"count":1677,"data":["d97662fa-06ac-11e9-92c7-0242ac110002",...],"elapsed_seconds":10.545469760894775,"type":"good"}我们看到 , 这个接口调用居然要花 10 秒!这么长的响应时间 , 显然不能满足实际的应用需求 。
 

到底出了什么问题呢?我们还是要用前面学过的性能工具和原理 , 来找到这个瓶颈 。
 
不过别急 , 同样为了避免分析过程中客户端的请求结束 , 在进行性能分析前 , 
我们先要把 curl 命令放到一个循环里来执行 。你可以在终端二中 , 继续执行下面的命令:
$ while true; do curl http:接下来 , 再重新回到终端一 , 查找接口响应慢的“病因” 。
最近几个案例的现象都是响应很慢 , 这种情况下 , 我们自然先会怀疑 , 是不是系统资源出现了瓶颈 。
 
所以 , 先观察 CPU、内存和磁盘 I/O 等的使用情况肯定不会错 。
我们先在终端一中执行 top 命令 , 分析系统的 CPU 使用情况:
$ toptop - 12:46:18 up 11 days,  8:49,  1 user,  load average: 1.36, 1.36, 1.04Tasks: 137 total,   1 running,  79 sleeping,   0 stopped,   0 zombie%Cpu0  :  6.0 us,  2.7 sy,  0.0 ni,  5.7 id, 84.7 wa,  0.0 hi,  1.0 si,  0.0 st%Cpu1  :  1.0 us,  3.0 sy,  0.0 ni, 94.7 id,  0.0 wa,  0.0 hi,  1.3 si,  0.0 stKiB Mem :  8169300 total,  7342244 free,   432912 used,   394144 buff/cacheKiB Swap:        0 total,        0 free,        0 used.  7478748 avail Mem PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND9181 root      20   0  193004  27304   8716 S   8.6  0.3   0:07.15 python9085 systemd+  20   0   28352   9760   1860 D   5.0  0.1   0:04.34 redis-server 368 root      20   0       0      0      0 D   1.0  0.0   0:33.88 jbd2/sda1-8 149 root       0 -20       0      0      0 I   0.3  0.0   0:10.63 kworker/0:1H1549 root      20   0  236716  24576   9864 S   0.3  0.3  91:37.30 python3观察 top 的输出可以发现 , CPU0 的 iowait 比较高 , 已经达到了 84%;而各个进程的 CPU 使用率都不太高 , 最高的 python 和 redis-server  , 也分别只有 8% 和 5% 。再看内存 , 总内存 8GB , 剩余内存还有 7GB 多 , 显然内存也没啥问题 。
综合 top 的信息 , 最有嫌疑的就是 iowait 。所以 , 接下来还是要继续分析 , 是不是 I/O 问题 。
还在第一个终端中 , 先按下 Ctrl+C , 停止 top 命令;然后 , 执行下面的 IOStat 命令 , 查看有没有 I/O 性能问题:
$ iostat -d -x 1Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util...sda              0.00  492.00      0.00   2672.00     0.00   176.00   0.00  26.35    0.00    1.76   0.00     0.00     5.43   0.00   0.00


推荐阅读