性能监控诊断

用户响应时间 = 服务器响应时间 + 网络时间

服务器时间:用户发送请求、应用服务器收到用户发送的请求、应用服务器和DB、文件系统交互、应用服务器返回数据、界面显示

网络时间:服务供应商差异、网络延迟、网络拥塞

除此以外,系统的可靠性、稳定性,也是需要考虑的。系统管理员可能经常会遇到系统不稳定,响应速度慢等问题。

系统完成一次请求或响应任务时,还与硬件设备、系统设计、网络拓扑图、内部网络连接设备如交换机、路由器等接入设备、以及路由的处理策略,网络线路等多方面有关。任何一个环节出了问题,都是会影响到系统的性能。当系统出问题时,需要从应用程序、操作系统、服务器设备、网络环节、系统资源等多方面综合排查,定位分析问题,然后集中解决问题。

系统性能分析思路

针对操作系统而言,不能只关注部署在系统上的应用不可用,访问慢等问题。这些仅仅是一个表面现象,应该系统地去分析应用程序在什么样的负载条件下,系统了运行了多少应用,系统的资源分配是否合理,系统是否超负荷运行,是否优化系统的资源来让系统和应用程序耦合度更高。

日前常见的服务器组成框架,系统日益复杂的工作负载中,性能受许多因素影响,处理器速度、内存容量、网络或磁盘i/o控制器的数量以及磁盘的容量和速度显然是所有工作负荷的重要性能特征组件。其他主要组件包括应用程序自身的性能特征、工作负荷的特征、应用程序间的通讯行为、磁盘或网络上的数据访问模式,当然还包括终端用户对应用程序的使用模型。对特定工作负荷调优时,常常首先要假定许多物理环境特征,例如:处理器数量、处理器类型、磁盘数量等保持不变。性能分析的主要目标是:识别出工作负荷中哪些组件是当前提高性能和整体吞吐率的瓶颈,以及当工作负荷已经导致硬件能力饱和是,哪些硬件配置的改进,会提高该工作负荷的吞吐率和性能。

  • 整体系统cpu利用率

在做系统性能分析前,首先要了解系统处理器的情况,如逻辑处理器、处理器型号、主频率、cache大小、是否支持超线程技术等信息,在知道这些的情况下,才能更好的进行系统的性能分析。

当cpu处于满负载状态时,需要结合系统附带的一些监控分析工具。检查相关的系统日志,web服务器应用日志,db日志等,结合辅助的一些命令如top、free、uptime、sar等辅助分析是否系统cpu会被完全占用。

应用程序java,可以通过jvm自带的命令工具(jstat、jmap、jvisualvm、jconsole)来分析。Mysql,可以通过数据库监控(spotlight、Monyog、及命令行的工具)来分析,以及考虑是否需要做负载均衡或加强机器性能。

  • 内存利用率

当可用的内存太小,系统进程会被阻塞中,应用也将会变得非常缓慢,有时间会失去响应,严重的甚至可能会触发系统的oom(内存溢出)从而引起应用程序被系统给杀死,更严重的情况可能会引起系统重启。当机器的内存太大的时候,有时候也是一种浪费。这时候要考虑做一些缓存服务器来提升系统性能。

虚拟内存也是在内存里面考虑的性能指标。在系统设计中,当系统的物理内存不够用,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到虚拟内存空间中,等到那些程序要运行时,再从虚拟内存中恢复保存的数据到物理内存中。

这样,系统总是在物理内存不够时,来进行内存之间的交换。有时可能越过系统性能瓶颈,节省系统升级费用。在做性能分析的时候,要考虑系统有无设置虚拟内存,以及虚拟内存的使用情况。

  • 磁盘i/o的利用率和延迟

系统磁盘数据的读写,i/o读写的性能直接会影响系统程序的性能。读写的性能直接会影响系统程序的性能,磁盘i/o系统是系统中最慢的部分。主要是cpu处理频率较磁盘的物理操作快几个数据级。如果拿读取磁盘和内存的时间作比较就是分钟级到毫秒的区别。i/o比较频繁的(读或写)时候,如果i/o得不到满足会导致应用的阻塞。针对i/o的场景模型,要考虑的有i/o的tps、平均i/o数据、平均队列长度、平均服务时间、平均等待时间、io利用率等指标。

  • 网络利用率

系统应用之间的交互,尤其是跨机器之间的,都是要基于网络的,因此网络带宽、响应时间、网络延迟、阻塞等都是影响系统性能的因素。假如应用在不稳定、不安全的网络下会导致应用程序的超时、丢弃、阻塞、波动率大,这些在系统中是不能接收的。在系统中,要考虑对应的网络是否可达、防火墙是否开启、端口的访问、宽带是否有被限制、路由的寻址、网络的延时等问题。

瓶颈阈值分析思维导图

性能监控诊断_第1张图片

性能监控诊断_第2张图片

 

性能监控诊断_第3张图片

性能监控诊断_第4张图片

性能监控诊断_第5张图片

性能监控诊断_第6张图片

你可能感兴趣的:(理论基础)