# 案例插入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
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 响应速度与智能化如何平衡,携程酒店搜索实践
- 使用Redis轻松实现秒杀系统
- 慢性咽喉炎的症状
- mongodb,redis,hbase,三者都是nosql数据库,他们的最大区别和不同定位是什么?
- Redis、传统数据库、HBase以及Hive的区别
- 聊聊Mysql索引和redis跳表
- Redis:缓存被我写满了,该怎么办?
- 肾结石严重吗?专业人士来回答!
- 老人心肌梗塞严重吗
- ios15.1更新后电池,苹果11升级ios14.4.1耗电严重-
