resin 服务器响应超时,线上解决Resin服务响应过慢的几个方法(转)

本文介绍了如何检查服务器的TIME_WAIT连接数,以及通过调整配置来缓解问题。同时,利用jmap和jhat工具深入分析JVM内存,了解对象占用内存情况。当遇到消息队列堵塞和死锁问题时,可以借助jstack来获取堆栈信息进行诊断。这些方法对于Java应用的性能优化和故障排查至关重要。
摘要由CSDN通过智能技术生成

1、查看服务器网络状态TIME_WAIT的数量。

#netstat -antp|grep -i time_wait|wc -l查看TIME_WAIT数量,如果数量过多,并且Resin前端还有Nginx或者Apache,那么请把socket-timeout、keepalive-max和把keepalive-timeout调小

30s

512

60s

2、查看JVM中对象占用内存情况

jmap 能查看jvm内存中,对象占用内存的情况,还提供非常方便的命令将jvm的内存信息导出的文件。

#jmap -dump:format=b,file=heap.bin

命令jhat 能够解析 java内存堆的文件,生成相关信息,并启动webServer提供查询。 也就说,我们可以通过浏览器来看这些内存信息。jhat还提供了一个类sql的查询语言---OQL来给我们使用。

#jhat -J-Xmx512m heap.bin

就可以将我们刚刚使用jmap导出的内存信息交给jhat解析了。默认的情况下,它会监听7000端口。我在本机的地址就是,http://localhost:7000/。

访问http://localhost:7000/histo/,大致可以看到一下的画面,这里列出对象,对象实例数量、总占用内存大小。点击进去之后可以看到“谁引用了这个对象,这个对象又引用了哪个”这些信息。不过因为展示的信息非常多,并没有想象中那样清晰可见。

3、dump获取java stack和native stack信息

消息队列会突然堵塞,查看消费者日志,发现处理延时明显延长,而此时网络无丢包。最后多方排查,是java消费者运行出现死锁。

这种问题可以通过jstack来dump获取java stack和native stack信息查明问题。

#jstatck

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值