性能可以理解为一个系统实现其功能的能力,从宏观上可以描述为系统能够稳定运行、高并发访问时系统不会出现宕机、系统处理完成用户请求需要的时间、系统能够同时支撑的并发访问量、系统每秒可以处理完成的事务数等;从微观上可以描述为处理每个事务的资源开销,资源的开销可以包括CPU、磁盘I/O、内存、网络传输带宽等,甚至可以体现为服务器连接数、线程数、JVM Heap等的使用情况,也可以表现为内存的分配回收是否及时、缓存规则的命中率等。
性能到底有多重要呢?我们可以举一个网站访问的例子来说明,一个网页的加载速度如果超过4~5秒,可能25%的人会选择放弃。百度的搜索结果响应时间慢0.4秒,一天的搜索量可能会减少千万次左右。所以一个系统、一个网站的性能决定了其能够支撑业务的能力。
不同的群体对性能的理解可能会存在很大的差异。
(1)普通的用户更加关心响应时间和稳定性:
· 要访问的页面还要等多久才能加载出来?
· 为什么有时候会访问失败?为什么会出现502错误?
(2)架构师和工程师可能更加关心架构设计和代码编写的性能:
· 应用架构设计是否合理?
· 技术架构设计是否合理?
· 数据架构设计是否合理?
· 部署架构设计是否合理?
· 代码是否存在性能问题?
· JVM中是否有不合理的内存分配和使用?
· 线程同步和线程锁是否合理?
· 代码的计算算法是否可以进一步优化以减少CPU的消耗时间?
(3)运维工程师可能更加关心系统的监控以及稳定性情况:
· 服务器各项资源使用率在正常范围内吗?
· 数据库的连接数在正常范围内吗?
· SQL执行时间正常吗,是否存在慢查询日志?
· 系统能够支撑7×24小时连续不间断的业务访问吗?
· 系统是高可用的吗,服务器节点宕机了会影响用户使用吗?
· 对节点扩容后,可以提高系统的性能吗?