系统性能分析思路

从系统层面,用户的响应时间由两部分组成,分别是服务器响应时间和网络时间。

用户响应时间(RT: Response Time) = 服务器响应时间 + 网络时间

总体来说,系统提供了比较多的有用信息分析工具,可以从以下几块来分析:

  • 整体系统CPU利用率
  • 内存利用率
  • 磁盘 I/O 的利用率和延迟
  • 网络利用率

系统性能分析因素-CPU

了解系统处理器情况,如逻辑处理器、处理器型号、主频率、cache 大小、是否支持超线程技术等信息

  • Linux 命令辅助分析CPU 使用信息:top free uptime sar
  • java 程序可以通过 JVM 自带的命令工具来分析:jstat, jmap, Jvisualvm, JConsole
  • Mysql 可通过数据库监控工具来分析:Spotlight, Monyog 及命令行工具
  • 以及考虑是否需要负载均衡或者加强机构性能

系统性能分析因素-内存

当可用的内存太小,系统进程会被阻塞中,应用也将会变得非常缓慢,有时候会失去响应,严重的甚至可能会触发系统的 OOM(内存溢出)从而引起应用程序被系统给杀死,更严重的情况可能会引起系统重启。

虚拟内存也是在内存里面我们需要考虑的性能指标,在系统的设计中,当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到虚拟内存空间中,等到那此程序要运行时,再从虚拟内存中恢复保存的数据到物理内存中。这样系统总是在物理内存不够时,才进行内存之前的交换。有时可以越过系统性能瓶颈,节省系统升级费用。在做性能分析的时候,我们需要考虑系统有无设置虚拟内存,以及虚拟内存的使用情况。就虚拟内存的设定而言,因为以前的系统内存普遍偏小,所以有很多数据会建议是物理内存的两倍,但随着物理内存的增大,很多服务器的 RAM 已经可以到 64GB, 128GB 的进修,虚拟内存再设置成它的两倍就有点浪费磁盘空间了。

系统性能分析因素-网络

系统间交互,跨机器之间传输都是基于网络的,因此网络带宽、响应时间、网络延迟、阻塞等都是影响系统性能的因素。假如应用在不稳定、不安全的网络下会导致应用程序的超时、丢弃、阻塞、波动率大,这些在系统中都是不能接受的。

在系统中,我们要考虑对应的网络是否可达、防火墙是否开启、端口的访问、带宽是否有被限制、路由的寻址、网络的时延等问题。

系统性能分析因素-I/O

I/O(磁盘数据的读写):考虑的有 IO 的TPS、平均I/O 数据、平均队列长度、平均服务时间、平均等待时间、IO利用率(磁盘Busy Time%)等指标。

 [test@host-173-16-64-182 ~]$ free
                  total        used        free      shared  buff/cache   available
    Mem:       65806008    53718676      479440     1877928    11607892     9519776
    Swap:      20971516     5127916    15843600
    [test@host-173-16-64-182 ~]$ vmstat
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     1  0 5127916 1296088 395212 10374068    0    0     2     9    0    0  1  0 99  0  0

你可能感兴趣的:(系统性能分析思路)