性能问题的思考

6 篇文章 0 订阅
2 篇文章 0 订阅

性能问题往往是非常难以解决的,主要由于生产环境复杂,造成问题的原因众多,定位问题比较困难。最近阅读了《性能之巅》,通过此文章来总结一下自己学习到的知识。

通读整本书,发现操作系统的学习在性能问题排查上面将起到非常关键的作用,写代码的时候感觉操作系统层面的东西离我们有些遥远,但其实在性能分析这块很多知识点就都串联起来了,体现在对软硬件资源的分析上。

首先上一幅自己绘制的脑图(全文的核心):
在这里插入图片描述
性能问题的诊断是困难的,这就需要使用工具,对计算机系统进行全方位的监控。整个方法论是将一个大问题进行分解,定位,最后聚焦于一个点上进行优化处理,也就是所谓的找到病根。该脑图提供了大致的思考方向,从硬件到软件层面。

采用USE方法可以检查系统健康,识别瓶颈和错误,USE方法核心是对于每项资源的使用率,饱和度和错误进行较为准确的评估。

脑图中涉及到的点(基于Linux系统):

查看日志常用命令:
tail -n 100 查看文件最后一百行的参数

CPU:
top:最消耗CPU的任务,显示CPU消耗百分比
ps:进程状态命令
mpstat: 每个CPU的使用状况

内存:
vmstat :虚拟内存与物理内存的统计,检查free列的可用内存

文件系统:
df: 报告文件系统使用情况和容量统计信息

磁盘(最好的磁盘IO性能就是没有IO,尝试通过缓存读取,缓冲写入来尽量避免磁盘IO)

iostat: 每个磁盘的I/O使用情况
iotop:查看哪个进程引发了磁盘的IO

网络:
netstat:查看网络连接状态
ping:查看网络延迟以及路由的跳越数等
网络延时主要有以下几个方面:
1.主机名解析延迟(DNS解析)
2.连接延迟(TCP连接延迟)
3.首字节延迟(从连接建立到接收到第一个字节数据所需要的时间)
4.往返时间(网络包往返两个端点所需时间)
5.连接生命周期(一个网络从建立到关闭所需时间-建立长连接)

由于现在的系统普遍都是分布式的系统,除了考虑并发并行,数据一直性等问题,网络的延迟也是非常关键的影响因素。

喜欢的话点赞转发关注,请三连,谢谢~


WeChat: wzcspace
Bilibili: https://space.bilibili.com/473161964
Instagram: https://www.instagram.com/barrywzc/
Twitter: https://twitter.com/BarryWa34098316
GitHub: https://github.com/wzcwzcwzc
Patreon: https://www.patreon.com/wzcspace


Please leave a LIKE and SUBSCRIBE for more content!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值