29 | 案例篇:Redis响应严重延迟,如何解决?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了基于Redis缓存的案例分析,重点讨论了MySQL和Redis的性能问题及解决方法。作者首先回顾了一个基于MySQL的商品搜索案例,发现磁盘I/O瓶颈导致的慢查询问题,并通过增加索引解决了问题。接着,作者引出了Redis作为缓存的情况,指出Redis基于内存存储数据,但配置持久化可能引发磁盘I/O性能问题。随后,作者介绍了一个基于Python Flask的应用程序,利用Redis管理缓存并提供HTTP接口。文章通过实际案例和性能工具分析,帮助读者深入理解系统资源使用情况和性能瓶颈,为读者提供了一种系统性能分析的方法。整体而言,本文适合读者了解基于Redis的缓存应用和性能优化,对于系统性能分析有一定的参考价值。文章通过实际案例和性能工具分析,帮助读者深入理解系统资源使用情况和性能瓶颈,为读者提供了一种系统性能分析的方法。
《Linux 性能优化实战》,新⼈⾸单¥68
全部留言(32)
- 最新
- 精选
- 李博老师,有个问题咨询下,为什么top显示 iowait比较高,但是使用iostat却发现io的使用率并不高那?
作者回复: iowait不代表磁盘I/O存在瓶颈,只是代表CPU上I/O操作的时间占用的百分比。假如这时候没有其他进程在运行,那么很小的I/O就会导致iowait升高
2019-01-25453 - Geek_33409b打卡day30 IO性能问题首先可以通过top 查看机器的整体负载情况,一般会出现CPU 的iowait 较高的现象 然后使用 pidstat -d 1 找到读写磁盘较高的进程 然后通过 strace -f -TT 进行跟踪,查看系统读写调用的频率和时间 通过lsof 找到 strace 中的文件描述符对应的文件 opensnoop可以找到对应的问题位置 推测 对应的问题,mysql 案例中的大量读,可能是因为没有建立索引导致的全表查询,从而形成了慢查询的现象。redis 中则是因为 备份文件设置的不合理导致的每次查询都会写磁盘。当然不同的问题还需要结合对应的情况进行分析
作者回复: 👍
2019-02-06527 - ____的我前段时间刚找到一个由于内存数据被交换到swap文件中导致内存数据遍历效率变低的问题 问题定位过程是使用pidstat命令发现进程cpu使用率变低 mpstat命令观察到系统iowait升高 由此怀疑跟io有什么关系 perf命令观察发现内存数据遍历过程中swap相关调用时间占比有点异常 然后使用pidstat命令+r参数 也观察到进程在那段时间主缺页中断升高 由此确定问题 老师的课程非常有用 多多向您学习 希望老师能多分享一些定位网络延迟问题的方法 不仅仅局限在ping探测
作者回复: 谢谢分享性能排查的经验👍
2019-02-11212 - yungoonsenter报了loadlocale.c assertion设置 export LC_ALL=C 即可
作者回复: 谢谢分享
2019-03-1711 - 武文文武老师您好,一直在听您的视频,发现您用了很多的小工具来检查系统性能指标,而我们公司使用nmon工具,就能一次性将几乎所有常用的指标全部获取到了,而且还能拿到历史数据,请问我们用nmon是否就能在大部分情况下取到了您说的top pidstat等工具呢,如果不可以那您能说说原因吗?非常感谢
作者回复: 嗯,实际使用中,使用类似nmon这种监控系统是更推荐的做法。不过,在监控系统的间隔时间不够小,或者指标不够全的时候,还是需要到系统上去抓取更多的细节
2019-02-28311 - 从远方过来老师,你这几篇文章大量使用了strace,它的负载不是很高么?在生产上可以使用么?
作者回复: 是的,strace会影响性能,所以一般不使用它来做监控。但是在已经出现严重性能问题的时候,使用它来排查问题还是可以接受的。
2020-07-086 - 利俊杰nsenter --target $PID -- lsof -i 执行失败,提示:loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_COLLATE) / sizeof (_nl_value_type_LC_COLLATE[0]))' failed 可以参考下https://stackoverflow.com/questions/37121895/yocto-build-loadlocale-c-130 配置 LANG=/usr/lib/locale/en_US
作者回复: 谢谢分享
2019-01-265 - 开始懂了curl http://10.39.25.7:10000/init/get_cache <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>500 Internal Server Error</title> <h1>Internal Server Error</h1> <p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>
作者回复: /init/ 后面需要一个数字
2019-01-253 - 往事随风,顺其自然git clone https://github.com/feiskyer/linux-perf-examples/tree/master/redis-slow Initialized empty Git repository in /root/redis-slow/.git/ error: The requested URL returned error: 403 Forbidden while accessing https://github.com/feiskyer/linux-perf-examples/tree/master/redis-slow/info/refs 代码怎么克隆不下来
作者回复: clone要指定代码仓库的路径,而不是子目录: git clone https://github.com/feiskyer/linux-perf-examples
2019-01-252 - Chn.K请教个问题:我用iotop观测IO使用情况,发现某进程的DISK READ 和DISK WRITE都是0,但是IO已经到99.99%了,通过top/iostat对cpu/磁盘的使用情况进行观测,均未发现什么异常,这个是什么原因呢? Total DISK READ : 18.14 M/s | Total DISK WRITE : 31.59 M/s Actual DISK READ: 18.02 M/s | Actual DISK WRITE: 15.60 M/s PID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND 148 be/4 root 0.00 B/s 0.00 B/s 0.00 % 99.99 % [ksoftirqd/17] 23655 be/4 root 0.00 B/s 988.19 K/s 0.00 % 0.00 % ./xxxx ../etc/base.conf 17535 be/4 root 18.14 M/s 30.63 M/s 0.00 % 0.00 % xxxx
作者回复: 这个IO 99%跟你想的磁盘IO使用99%是不一样的,具体含义你可以去查一下iotop的文档
2019-02-2021