tomcat websocket WsFrameServer内存溢出的问题解决

 更新时间:2024年12月24日 08:37:32   作者:愤怒的苹果ext  
本文主要介绍了tomcat websocket WsFrameServer内存溢出的问题解决,文中通过图文示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

WebSocket连接上了300以后JVM就报内存溢出了,把JVM溢出的堆栈日志导了出来这是详情:

 648 instances of "org.apache.tomcat.websocket.server.WsFrameServer", loaded by "java.net.URLClassLoader @ 0x80f923a8" occupy 1,598,429,376 (96.40%) bytes. These instances are referenced from one instance of "java.util.concurrent.ConcurrentHashMap$Node[]", loaded by "<system class loader>"

Keywords
java.util.concurrent.ConcurrentHashMap$Node[]
org.apache.tomcat.websocket.server.WsFrameServer
java.net.URLClassLoader @ 0x80f923a8

这里写图片描述

这里写图片描述

这里写图片描述

可以看到WsFrameServer里面有2个变量messageBufferText和messageBufferBinary占用内存比较大。那么来看下源码,一般项目不会导入tomcat的jar,所以如果在项目里找不到WsFrameServer就先导入tomcat的包。

这里写图片描述

  • WsFrameServer继承WsFrameBase ,messageBufferText和messageBufferBinary属性就在WsFrameBase里,然后我们来debug程序,看看是怎么设置的值。

  • WsFrameServer里面会调用WsSession的构造方法有给messageBufferText和messageBufferBinary赋默认值2个都是8192大概是8K,然后再通过WsSession里面的get属性方法拿到这2个值。

这里写图片描述

这里写图片描述

然后走到了WsWebSocketContainer , setDefaultMaxTextMessageBufferSize方法设置值,这里的值是819200大概是800K

这里写图片描述

然后再走看是哪里调用的这个方法:

这里写图片描述

这里写图片描述

设置messageBufferText和messageBufferBinary的地方就是ServletServerContainerFactoryBean,最后发现在spring的配置文件中配置了这2个值:

这里写图片描述

把这个后面2个属性的值减少2个0,连接数明显增大了,也没报内存溢出了。

到此这篇关于tomcat websocket WsFrameServer内存溢出的问题解决的文章就介绍到这了,更多相关tomcat websocket内存溢出内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Ubuntu安装配置tomcat9教程

    Ubuntu安装配置tomcat9教程

    这篇文章主要为大家详细介绍了Ubuntu安装配置tomcat9教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 如何修改Tomcat默认访问根目录

    如何修改Tomcat默认访问根目录

    文章描述了如何在Tomcat中配置和访问webapps/guanwang目录下的文件,在Linux和Windows系统中,配置方法相同,只是文件夹地址有所差别,在该目录下上传了一个文本文件,可以直接访问其内容
    2024-12-12
  • Tomcat使用线程池处理远程并发请求的方法

    Tomcat使用线程池处理远程并发请求的方法

    这篇文章主要介绍了Tomcat使用线程池处理远程并发请求的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 启动tomcat可以访问tomcat首页,但不能访问自己的项目问题及解决

    启动tomcat可以访问tomcat首页,但不能访问自己的项目问题及解决

    这篇文章主要介绍了启动tomcat可以访问tomcat首页,但不能访问自己的项目问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Linux系统centos7.X安装tomcat8的图文教程

    Linux系统centos7.X安装tomcat8的图文教程

    这篇文章主要介绍了Linux系统centos7.X安装tomcat8的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Tomcat 8.5 下载、安装、启动及遇到的各种问题

    Tomcat 8.5 下载、安装、启动及遇到的各种问题

    本文内容主要介绍 Tomcat 8 的安装,以及可能会遇到的问题,结合图文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • Tomcat 部署程序方法步骤

    Tomcat 部署程序方法步骤

    本文主要介绍了Tomcat部署程序的方法步骤,具有一定的参考价值,下面跟着小编一起来看下吧
    2016-12-12
  • 解决Tomcat 中catalina.out持续累加问题

    解决Tomcat 中catalina.out持续累加问题

    这篇文章主要介绍了解决Tomcat 中catalina.out持续累加问题 ,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-03-03
  • Tomcat首次部署web项目流程图解

    Tomcat首次部署web项目流程图解

    这篇文章主要介绍了Tomcat首次部署web项目流程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Tomcat常见异常及解决方案代码实例

    Tomcat常见异常及解决方案代码实例

    这篇文章主要介绍了Tomcat常见异常及解决方案代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04

最新评论