深入理解JVM
系统性能优化并不是一上来就是JVM优化,相反JVM优化几乎是最后的手段了。影响一个系统的性能的因素非常多,如图: 从服务本身来看,影响服务性能的主要包扣: 我们写代码时所选择的数据结构和算法 服务开启的线程时是否合理 WEB应用,WEB服务 JVM方面的影响 最后是操作系统的影响 从整个服务架构上来看还有: 数据持久化 服务间的远程调用 消息缓存等中间件的选择 常用的性能测试指标 响应时间 一个请求从提交到响应所耗费的时间,一般比较关注平均响应时间,和最大响应时间。 常用组件的响应时间: 操作|响应时间 ---|--- 打开一个站点 |几秒 数据库查询一条记录(有索引)| 十几毫秒 机械磁盘一次寻址定位| 4毫秒 从机械磁盘顺序读取1M数据 |2毫秒 从SSD磁盘顺序读取1M数据| 0.3毫秒 从远程分布式缓存Redis读取一个数据|0.5毫秒 从内存读取1M数据 |十几微妙 Java程序本地方法调用 |几微妙 网络传输2Kb数据 | 1微妙 从上述表格我们能看出: 数据持久化,使用SSD与使用机械硬盘相比性能可以提高将近10倍; 数据查询,数据如果直接在本地内存,那么它的读取效率比数据库快将近1000倍,比redis快30倍左右;如果数据在redis缓存,那么它的读取速度比数据库快30倍左右;这也是为什么使用缓存是提升系统性能的“银弹”的原因。 为监控而生的多级缓存框架