性能测试之:操作系统性能指标观测及分析

本文涉及的产品
性能测试 PTS,5000VUM额度
简介:
1.       对于Linux系统来说,Free Mem很少并不一定代表内存不足,成为瓶颈。实际上这是由于LINUX的内存管理机制造成的,LINUX会把Free的内存(完全没使用过的内存)尽可能的利用起来,作为buffers/cached(当有进程申请内存时,如果没Free,会把buffers/cached分配给进程),以提高系统的性能,尤其是在有大量I/O的情况下,增大buffers/cached会很大地提高I/O,可以提高多达20%的I/O性能,因此实际是LINUX的这一特性造成Free Mem几乎没有。当服务器存在大量I/O时,比较容易出现Free Mem几乎没有这样的情况。used-buffers-cached得到的结果才是应用程序用掉的内存,如果这个数字已经接近或超过总的内存数,那么内存成为瓶颈。如下图示:

第二行(-/+ buffers/cache)的used是扣除了buffers/cache后的used内存,这才是真正的被应用程序使用掉的内存(包括内核级进程和用户级进程)。也可以通过swap来判断内存是否是瓶颈,如果swap大量used,并且频繁的发生swap in和swap out,那么内存一定是瓶颈;有时用free会看到少量的swap used,这并不影响性能,内存不是瓶颈。
PS:buffers和cached的区别。两者都是缓存,都是为了提高I/O的性能,不同的是buffers是块设备的缓存,而cached是字符设备的缓存,简单地说,buffers用来存储目录下面有什么内容、什么权限等等,cached则存储文件的内容,例如,ls一下,可以发现buffers有明显增长(buffers其实一直在缓慢增长),而打开一个文件后,可以发现cached明显增长。
2. 现象:还没有开始性能测试,服务器的Load达到1以上,CPU 使用 user接近0sys有些情况下也接近0,有些情况下会达到10%以上,用vmstat查看,r(运行队列中的等待进程数)=0,b(等待I/O的进程数)>0
原因:产生这种现象的原因很多,比如,操作系统中存在状态为D(Uninterruptible sleep)或状态为Z(Zombie)的进程,这两种进程会把系统Load弄高(因为这两种状态的进程会滞留在CPU 运行队列中);或者系统对同一个目录mount了多次,会导致load升高,sys CPU>10%;一般都是跟I/O相关。
判断及解决方法:top或者ps afux一下,看看进程的状态;df一下看看是否有重复的mount;vmstat查看一下;可以根据不同的情况采用不同的办法来解决,由于是测试环境,最简单有效的办法就是reboot。不过有时reboot前也要做一些工作,比如已经mount了NFS服务端上的一个目录,并写入了fstab中,而NFS服务端关闭了,那么需要把fstab中的相应内容删除后再reboot,否则reboot后仍然会自动mount。



本文转自elbertchen 51CTO博客,原文链接:http://blog.51cto.com/linkyou/283246,如需转载请自行联系原作者
相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
2月前
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
3月前
|
缓存 监控 算法
软件测试中的性能瓶颈分析与优化策略
【10月更文挑战第6天】 性能测试是确保软件系统在高负载条件下稳定运行的重要手段。本文将深入探讨性能测试的常见瓶颈,包括硬件资源、网络延迟和代码效率等问题。通过具体案例分析,我们将展示如何识别并解决这些问题,从而提升软件的整体性能。最后,文章还将分享一些实用的性能优化技巧,帮助读者在日常开发和测试中更好地应对性能挑战。
137 3
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
MarS:微软开源金融市场模拟预测引擎,支持策略测试、风险管理和市场分析
MarS 是微软亚洲研究院推出的金融市场模拟预测引擎,基于生成型基础模型 LMM,支持无风险环境下的交易策略测试、风险管理和市场分析。
35 8
MarS:微软开源金融市场模拟预测引擎,支持策略测试、风险管理和市场分析
|
4月前
|
监控 测试技术 持续交付
软件测试中的性能瓶颈分析与优化策略
性能瓶颈,如同潜伏于软件深处的隐形障碍,悄然阻碍着系统的流畅运行。本文旨在揭示这些瓶颈的形成机理,剖析其背后的复杂成因,并汇聚一系列针对性的优化策略,为软件开发者提供一套系统性的解决方案。
71 5
|
11天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
29 11
|
13天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
41 10
|
30天前
|
SQL 网络安全 数据库
GBase 8a集群V8客户端gccli适配欧拉操作系统绕行方案分析
GBase 8a集群V8客户端gccli适配欧拉操作系统绕行方案分析
|
2月前
|
监控 算法 Java
jvm-48-java 变更导致压测应用性能下降,如何分析定位原因?
【11月更文挑战第17天】当JVM相关变更导致压测应用性能下降时,可通过检查变更内容(如JVM参数、Java版本、代码变更)、收集性能监控数据(使用JVM监控工具、应用性能监控工具、系统资源监控)、分析垃圾回收情况(GC日志分析、内存泄漏检查)、分析线程和锁(线程状态分析、锁竞争分析)及分析代码执行路径(使用代码性能分析工具、代码审查)等步骤来定位和解决问题。
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
71 1
|
3月前
|
缓存 监控 测试技术
软件测试中的性能瓶颈分析与优化策略
本文深入探讨了在软件测试过程中,如何有效地识别和解决性能瓶颈问题。通过对性能瓶颈的定义、分类以及常见原因的分析,结合实际案例,提出了一系列针对性的优化策略和方法。这些策略旨在帮助测试人员和开发人员提高软件的性能表现,确保软件在高负载条件下依然能够稳定运行。