广告位联系
返回顶部
分享到

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

Tomcat 来源:互联网 作者:佚名 发布时间:2024-12-25 21:59:58 人浏览
摘要

WebSocket连接上了300以后JVM就报内存溢出了,把JVM溢出的堆栈日志导了出来这是详情: 1 2 3 4 5 6 648 instances of org.apache.tomcat.websocket.server.WsFrameServer, loaded by java.net.URLClassLoader @ 0x80f923a8 occupy 1,598

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

1

2

3

4

5

6

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,连接数明显增大了,也没报内存溢出了。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
    Tag :
相关文章
  • tomcat websocket WsFrameServer内存溢出的问题解决

    tomcat websocket WsFrameServer内存溢出的问题解决
    WebSocket连接上了300以后JVM就报内存溢出了,把JVM溢出的堆栈日志导了出来这是详情: 1 2 3 4 5 6 648 instances of org.apache.tomcat.websocket.server.WsFra
  • Tomcat 8.5 下载、安装、启动及遇到的各种问题

    Tomcat 8.5 下载、安装、启动及遇到的各种问题
    1. Tomcat 安装 这是 tomcat 8 的下载链接:https://archive.apache.org/dist/tomcat/tomcat-8/ 此时在这里点击你要下载的版本号,这里大版本都是 8,这里演
  • nginx的请求转发配置过程介绍

    nginx的请求转发配置过程介绍
    Nginx的使用(windows环境) linux也和此类似 去官网下载nginx后解压 在当前目录打开cmd窗口输入nginx.exe 即可启动服务 若想停止当前服务 输入命令
  • linux设置tomcat开机启动的两种方式
    方法一: 1. 添加文件 1 vi /etc/systemd/system/tomcat.service 添加内容 1 2 3 4 5 6 7 8 9 10 11 12 13 [Unit] Description=Tomcat8 After=syslog.target network.target remote-
  • Maven3.8.1使用Tomcat8插件启动项目的方法(亲测有效

    Maven3.8.1使用Tomcat8插件启动项目的方法(亲测有效
    我本地maven的settings.xml文件中的配置: 1 2 3 4 5 6 mirror idaliyunmaven/id mirrorOfcentral/mirrorOf name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository
  • Tomcat中连接器(Connector)的实现
    在Apache Tomcat中,连接器(Connector)是一个关键组件,它负责处理与客户端的通信,包括接收请求和发送响应。Tomcat支持多种类型的连接器,
  • Tomcat中配置Context的方法
    在Tomcat中,Context是一个非常重要的组件,它代表了运行在Tomcat服务器上的一个独立的Web应用程序。每个Context组件通常对应一个特定的Web应用
  • Tomcat配置虚拟主机的实现
    在Tomcat中配置虚拟主机允许你通过不同的域名或IP地址访问同一台服务器上的不同Web应用。这通常通过编辑Tomcat的配置文件server.xml来实现。
  • Tomcat下配置HTTPS的教程

    Tomcat下配置HTTPS的教程
    Tomcat核心功能还是作为Java的容器来运行Java后端代码,虽然内置了对HTTP请求的支持,但并不是最优选择,通常部署时,会在Tomcat前面加一个
  • 修改TOMCAT的JVM虚拟机内存大小的三种方法

    修改TOMCAT的JVM虚拟机内存大小的三种方法
    修改TOMCAT的JVM虚拟机内存大小几种方式 Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。 经常会出
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计