Linux 性能监控分析

一、 Linux性能分析—内存
1. 内存工作机制
当有应用需要读写磁盘数据时,由系统把相关数据从磁盘读取到内存,如果物理内存不够,则把内存中的部分数据导入到磁盘,从而把磁盘的部分空间当作虚拟内存来使用,也称为Swap。如果给所有应用分配足够内存后,物理内存还有剩余,系统会再利用这些空闲内存,以提高整体I/O效率,其方法是把这部分剩余内存再划分为cache及buffer两部分加以利用。
从磁盘读取到内存的数据在被相关应用程序读取后,如果有剩余内存,则这部分数据会存入cache,以备第2次读取时,避免重新读取磁盘。当一个应用程序在内存中修改数据后,因为写入磁盘速度相对较低,在有空闲内存的情况下,这些数据先存入buffer,在以后某个时间再写入磁盘,从而应用程序可以继续后面的操作,而不必等待这些数据写入磁盘的操作完成。
如果在某个时刻,系统需要更多的内存,则会把cache部分擦除,并把buffer中的内容写入磁盘,从而把这两部分内存释放给系统使用,这样再次读取cache中的内容时,就需要重新从磁盘读取了。
通过以上分析可以得知,空闲物理内存不多,不一定表示系统运行状态很差,因为内存的cache及buffer部分可以随时被重用,在某种意义上,这两部分内存也可以看作额外的空闲内存。swap如果被频繁调用,bi,bo长时间不为0,则才是内存资源是否紧张的依据。
2. 内存计算与瓶颈分析
这里写图片描述
对于系统内核而言:
可用内存 = 系统free memory = 132884 KB
已用内存 = 系统used memory = 3789796 KB
对于应用程序而言:
已用内存= (- buffers/cache).used = 系统used memory – buffers – cached
= 3789796 - 139188 – 2536880 = 1113728 KB
可用内存= (+ buffers/cache).free = 系统free memory + buffers + cached
= 132884 + 139188 + 2536880 = 2808952 KB
Cache:文件系统的读写缓冲区,记忆打开的文件
例:vim操作,文本首次打开速度快于第二次(文件越大越明显)
Buffer:块设备的读写缓冲区,存储目录里面有什么内容,权限等等
例:find操作,首次检索速度快于第二次(目录越多越明显)
这里写图片描述
swpd:虚拟内存已使用的大小,若大于0,表示物理内存不足。
si:每秒从磁盘读入虚拟内存的大小,若大于0,表示物理内存不足。
so:每秒虚拟内存写入磁盘的大小,若大于0,同上。
bi: 每秒钟从硬盘读入数据的块数(因为硬盘是块设备)
bo:每秒钟写入硬盘数据的块数
若bi长期大于0,表示IO操作(SWAP)过于频繁,内存成为瓶颈。

二、 Linux性能分析—CPU
Linux系统中的Load是对当前CPU工作量的度量,即进程队列的长度。
Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 Load 。
这里写图片描述
0.24:表示最近1分钟平均负载 0.08:表示最近5分钟平均负载 0.03:表示最近15分钟平均负载
(1) 单核处理器
假设我们的系统是单CPU单内核的,把它比喻成是一条单向马路,把CPU任务比作汽车。当车不多的时候,load <1;当车占满整个马路的时候 load=1;当马路都站满了,而且马路外还堆满了汽车的时候,load>1
这里写图片描述Load < 1
这里写图片描述 Load = 1
这里写图片描述 Load >1
(2) 多核处理器
我们经常会发现服务器Load > 1但是运行仍然不错,那是因为服务器是多核处理器(Multi-core)。
假设我们服务器CPU是2核,那么将意味我们拥有2条马路,我们的Load = 2时,所有马路都跑满车辆。
Load = 2时马路都跑满了
Load 的意义?
# 如何查看CPU core
这里写图片描述
若Load 15分钟平均负载超过系统CPU核数,则表明CPU处于超负荷工作,CPU成为瓶颈。

三、 Linux性能分析—Disk
首先明确当前使用的哪个硬盘分区挂载点:/dev/vda1
这里写图片描述

这里写图片描述
await : 平均每次IO操作的等待时间
svctm : 平均每次设备执行IO操作的时间
如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用程序的响应时间变慢,说明需要进行性能优化。

%util : 每秒钟IO操作占用的百分比,%util=(r/s+w/s)*(svctm/1000) 。

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘成为瓶颈。
这里写图片描述
%iowait: CPU等待硬件I/O时,所占用CPU百分比
%idle: CPU空闲时间的百分比
若%iowait大于30% 且 %idle 小于 70%,同样说明 I/O 队列太长,应用程序的响应时间变慢,说明需要进行性能优化。

四、 Linux性能分析—Network
使用Nicstat工具进行监控:
这里写图片描述
%Util : 网卡利用率(百分比).
Sat : 网卡每秒的错误数.网卡是否接近饱满的一个指标
若%Util接近100%且Sat大于0,则表明当前网卡带宽趋于饱和且出现了网络错误,网络带宽成为瓶颈。
可能有童鞋会好奇是什么应用占用这么大带宽,可以通过NetHogs工具进行查看:
这里写图片描述

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
你可以使用一些工具和技术来构建分布式Linux性能监控系统。以下是一些常用的方法: 1. 选择适当的监控工具:选择一个适合的监控工具,比如Nagios、Zabbix、Prometheus等。这些工具可以帮助你监控服务器性能指标,如CPU使用率、内存使用率、磁盘IO等。 2. 配置监控代理:在每台服务器上安装监控代理,该代理将收集服务器上的性能数据并将其发送到中央监控服务器。你可以选择使用工具自带的代理,或者使用自定义的代理。 3. 设置中央监控服务器:在一个或多个中央服务器上设置监控系统。这些服务器将接收来自各个代理的性能数据,并进行处理和存储。你可以使用数据库来存储数据,以便后续分析和查询。 4. 配置报警规则:为了及时发现和解决问题,你可以设置一些报警规则。当某个性能指标超过预定的阈值时,系统会触发报警,并通知相关人员进行处理。 5. 可视化监控数据:使用监控工具提供的可视化功能,你可以创建仪表盘和图表来展示服务器性能数据。这有助于快速识别问题并进行分析。 6. 扩展监控系统:如果你有多个服务器,可以通过添加更多的监控代理和中央服务器来扩展监控系统。这样可以实现对整个分布式系统的全面监控。 记住,分布式Linux性能监控是一个复杂的任务,需要深入了解系统和监控工具。你可能需要进行一些额外的配置和调优,以适应你的特定需求和环境。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值