java服务端性能优化_服务端性能问题排查及优化---高延迟问题分析

昨天聊了性能测试指标和性能测试排除过程,主要是理论,今后几天主要讲案例。

延迟高有很多叫法,比如响应时间长、服务器反应慢、业务超时等,最根本的表现就是客户端发送请求到服务端后,服务器很长时间才给应答或者根本就没给应答。

造成延迟高(响应时间长)的原因有很多,比如:

服务端应用压力太大,确实处理不过来了

使用了不恰当的同步锁(代码级别或者其他资源锁)

第三方资源的不给力

线程池配置的不合理,线程数配置的太少导致的请求积压

网络原因,丢包、带宽限制、重传等

sleep

调用端代码有问题导致服务器应答到达客户端后,客户端处理不及时,可能也会误认为响应时间长

分析方法

用到的工具

jvisualvm

用于实时的监控每个方法的执行时间,统计比较精但不适合线上长时间使用。

jstack

抓取应用当前的线程堆栈信息,分析每个线程正在执行的操作。

通过jvisualvm分析

通过jvisualvm分析能够更直观的看到每个方法的执行时间,在测试环境或者开发阶段调优非常有帮助。

首先,打开jvisualvm,jvisualvm位于jdk的bin目录下,一般配置了jdk的环境变量可以直接通过命令行输入jvisualvm打开。另外也可以通过https://visualvm.github.io/去下载直接使用。

打开后界面如下:

36ed7b215f56

jvisualvm主界面

如果是本地应用,可以直接点击需要监控的进程,直接挂载上去。

如果是远程应用,需要在远程应用启动的时候,添加允许远程调试的参数。

-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=远

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值