记录一次因为InetAddress.getLocalHost()缓慢导致系统Websocket连接慢的坑

问题描述

系统在本地开发测试时Websocket连接很正常,都是秒连。但打包完部署到linux上运行,Websocket连接特别慢,平均要花10秒左右才能建立连接。

框架结构

整体采用前后端分离开发:
前端:Vue.js+sockjs-client+Webstomp-client
后端:Springboot+WebStomp

关于前后端Websocket具体实现,可移步我的另一篇博客:
前后端分离WebSocket +Springboot 实战详解

过程

排除了网络问题之后,在一步步的Debug之中,拨开了Bug的层层面纱。最终发现原来是Java原生方法InetAddress.getLocalHost()的坑~

在websocket连接过程中,会将http协议升级为websocket协议,在升级过程中,调用了InetAddress.getLocalHost(),而这个方法的底层获取依赖于JDK原生InetAddress类的操作。
下面是JDK中InetAddress类的描述

  • InetAddress Caching
  • The InetAddress class has a cache to store successful as well as unsuccessful host name resolutions.

By default, when a security manager is installed, in order to p

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值