Weblogic 12套接字无法下降的原因

    线上偶尔会有节点访问很慢,从console上看状态又完全没有告警,状态健康,但套接字很高,多次观察超过200就不行了。这里排除weblogic 12的套接字泄露的bug。

    其实套接字这个问题困扰我很多年了,以前的理解是IE跟weblogic之间的连接。凡是都要测试,只有测试能验证真伪。做了测试,发现开了几个浏览器,访问系统的时候套接字会上升,只要不访问,套接字就将下来了。然后我想到,如果有功能一直和weblogic一直交互,套接字很可能就一直不释放,验证了几个场景:

    1.写了一个jsp,页面上是一个线程sleep 20s,然后用jmeter测试,发现套接字跟jmeter设置的线程数有关,当请求完成后,套接字下降。

    2.用jmeter测试JDBC,用select * from test for update,跟上面效果是一样的。

    3.还有一个下载的功能,支持同步和异步下载,每当点击下载时,套接字增加1,待下载完毕后,套接字下降。

    4.使用quartz定时框架,由于应用代码是一套,多个节点做集群同时会触发定时任务,此时用的是select * from quartz_locks for update锁住表,哪个节点先锁住表就执行,其他都等待。经过测试,这种会使套接字不释放。

    测试到这里,我觉得可以证明“有功能一直和weblogic一直交互会导致套接字无法下降”的结论。下一步怎么排除,哪些长时间与中间件交互的功能?那就需要频繁使用jstack,能认出代码堆栈的最好。常常有使用线程池的无法辨认,那就需要在线程池上加上名称,之前的blog上有介绍。定时框架要改造,for update nowait,还有把定时任务放到两个节点上执行,不要每个节点都部署。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值