JAVA性能优化思路探究( 二 )


2.2.2 内存监控
也可以使用上面的查看内存页面交换,

JAVA性能优化思路探究

文章插图
重点关注free、si等栏目 。如果free变小了,si等也在变化,说明内存不足 。如果有磁盘交换的页面交换,则需要考虑增加内存 。
2.2.3 网络监控
使用第三方软件,它提供了一个可视页面,您可以通过该页面实时监控网络流量 。
JAVA性能优化思路探究

文章插图
2.2.4 个磁盘
用来监控
JAVA性能优化思路探究

文章插图
cpu属性值说明:
? 如果%的值太高,说明硬盘有I/O瓶颈 。如果 %idle 的值很高,说明 CPU 比较空闲 。如果 %idle 的值很高但系统响应很慢,可能是 CPU 正在等待分配内存 。内存容量 。如果%idle的值连续低于10,说明系统的CPU处理能力比较低,说明系统中最重要的资源是CPU 。
磁盘属性值说明:
? 如果%util接近100%,说明I/O请求太多,I/O系统已经满载,磁盘可能出现瓶颈 。如果svctm接近await,说明I/O几乎没有等待时间;如果await比svctm大很多,说明I/O队列太长,io响应太慢,需要进行必要的优化 。如果avgqu-sz比较大,也意味着有等价的io等待 。
2.3 JVM监控
使用jdk自带的工具在启动要连接的远程java进程时添加jmx配置,如下:
JAVA性能优化思路探究

文章插图
这样就可以通过ip+1111端口监听远程JVM了 。
2.4 连接池监控
2.4.1 查看数据库连接池数量
使用 -an | grep 'db ip' | wc -l 命令,可以看到与数据库创建的连接池,并看到这个值与数据库连接池集合的最小值和最大值的关系 。如果总是通过最大值,则需要考虑调整连接的最大值 。
2.4.2 查看工作线程数
方法一:使用工具远程监控查看
方法二:使用命令查看
2.5 监控
2.5.1 查看配置
? 使用用户登录服务器(su - )
? 启动命令行模式(/as)
? 查看配置(显示sga;)
2.5.2 性能监控
? 使用命令行模式
? 开始时启动快照命令,停止时再次执行快速命令
备注:快照命令(exec TORY.();)
? 执行快照后,获取报告(@?/rdbms/admin/)
? 分析报告(关注前5次)
3 性能分析
3.1 JVM分析
3.1.1 堆分析
为了不影响在线的性能,可以使用heap dump,命令如下:
jmap -dump:live,=b,file=.
然后可以将生成的 .hprof 文件导入 mat 或进行分析,以查看哪些对象正在消耗内存 。同时,软件提供的直方图方法可以快速方便地识别由于创建过多特定对象而导致的内存问题 。
3.1.2 垃圾回收分析
JVM启动时,可以设置-、-XX:等参数开启gc日志收集 。您还可以使用 jstat 进行监控和分析 。例如,jstat-pid 2 用于每 2 秒打印一次当前 Java 堆和 GC 状态 。
3.1.3 线程分析
使用jdk自带的jmc和工具,可以查看阻塞线程 。JMC 中集成的 JFR 可以轻松检索导致线程阻塞的事件 。并且在一定程度上可以检查线程阻塞在哪些资源上 。定位思路如下:
JAVA性能优化思路探究

文章插图
4 性能优化
在对系统进行深度优化之前,首先要找出CPU使用率低的原因 。优化代码的目的是在更短的时间内增加而不是减少 CPU 使用率 。
4.1 JVM启动参数优化
4.1.1 本机内存优化
原生内存的优化,包括使用压缩OOP(jvm启动参数加-XX:+)和调整大内存分页(修改linux配置和jvm启动参数-XX:)等,可以提高性能 。
4.1.2 垃圾回收机制的优化