从系统层面,用户的响应时间由两部分组成,分别是服务器响应时间和网络时间。
用户响应时间(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