一、问题现象
线网环境mqq服务器运行一段时间后,出现CPU 100%,进而导致虚拟化平台报告警,服务不可用。
二、背景介绍
1、环境信息:
管理系统:redhed5.7 8C 16G 300G 2台
接口子系统:redhed5.7 8C 16G 300G 2台
接入系统:redhed5.7 8C 16G 300G 2台
数据库服务器:redhed5.7 16C 32G 4T 2台
缓存服务器; redhed5.7 16C 16G 300G 2台
2、配置信息:
管理系统配置参数:
JAVA_OPTS='-Xms4096m -Xmx8192m -XX:PermSize=256m -XX:MaxNewSize=1024m -XX:MaxPermSize=512m -XX:-UseGCOverheadLimit -Djava.awt.headless=true'
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="500" minSpareThreads="20" maxIdleTime="60000"/>
<Connector executor="tomcatThreadPool" port="9005" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
enableLookups="false"
URIEncoding="UTF-8"
acceptCount="1000"/>
接口系统配置参数:
JAVA_OPTS='-Xms2048m -Xmx4096m -XX:PermSize=256m -XX:MaxNewSize=1024m -XX:MaxPermSize=512m -XX:-UseGCOverheadLimit -Djava.awt.headless=true'
接入系统配置参数:
java -Xms4096m -Xmx4096m -jar ./mqttServer.jar /usr/local/mqtt/properties/system.properties &
三、解决过程
1、jstack -F pid抓取堆栈信息
2、日志分析
Thread 12829: (state = IN_JAVA)
- java.util.HashMap.getEntry(java.lang.Object) @bci=81, line=465 (Compiled frame; information may be imprecise)
- java.util.HashMap.containsKey(java.lang.Object) @bci=2, line=449 (Compiled frame)
- com.avit.mqtt.MQTTServerHandler.userEventTriggered(io.netty.channel.ChannelHandlerContext, java.lang.Object) @bci=98, line=199 (Compiled frame)
- io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(java.lang.Object) @bci=16, line=315 (Compiled frame)
- io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(io.netty.channel.AbstractChannelHandlerContext, java.lang.Object) @bci=23, line=301 (Compiled frame)
- io.netty.channel.AbstractChannelHandlerContext.fireUserEventTriggered(java.lang.Object) @bci=5, line=293 (Compiled frame)
- io.netty.handler.timeout.IdleStateHandler.channelIdle(io.netty.channel.ChannelHandlerContext, io.netty.handler.timeout.IdleStateEvent) @bci=2, line=343 (Compiled frame)
- io.netty.handler.timeout.IdleStateHandler$AllIdleTimeoutTask.run() @bci=144, line=468 (Compiled frame)
- io.netty.util.concurrent.PromiseTask$RunnableAdapter.call() @bci=4, line=38 (Compiled frame)
- io.netty.util.concurrent.ScheduledFutureTask.run() @bci=46, line=120 (Compiled frame)
- io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(long) @bci=26, line=339 (Compiled frame)
- io.netty.channel.nio.NioEventLoop.run() @bci=137, line=393 (Compiled frame)
- io.netty.util.concurrent.SingleThreadEventExecutor$5.run() @bci=44, line=742 (Interpreted frame)
- io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run() @bci=4, line=145 (Interpreted frame)
- java.lang.Thread.run() @bci=11, line=745 (Interpreted frame)
3、结论
多线程场景下不能使用hashMap,修改为concurrenthashmap后解决
分享到:
相关推荐
SIoT为一个为中小学STEM教育定制的跨平台的开源MQTT服务器程序,S指科学(Science)、简单(Simple)的意思。SIoT支持Win10、Win7、Mac、Linux等操作系统,支持虚谷号、树莓派等迷你电脑,一键启动,无需注册和设置...
它提供了一个MQTT客户端和一个MQTT服务器(代理)。 该实现基于的文档。 特征 一般的 异步支持 客户端和服务器(但不支持UWP服务器)的TLS支持 扩展的通信渠道(例如内存,TCP,TCP + TLS,WS) 轻量级(仅MQTT的...
它提供了一个MQTT客户端和一个MQTT服务器(代理)。 该实现基于的文档。 产品特点 一般 异步支持 客户端和服务器(但不支持UWP服务器)的TLS支持 扩展的通信渠道(例如内存,TCP,TCP + TLS,WS) 轻量级(仅MQTT...
请阅读资源包中的readme,由于服务器太大,故需要自己去官网下载,readme中有说明 MQTT协议简记: ...是一种比较不错的Android消息推送方案。 FacebookMessenger采用了MQTT。 MQTT有可能成为物联网的重要协议。
2G,GPRS,超低功耗,OPEN CPU,GPS,GNSS,多通道,精简AT指令,esim,物联网2G,GPRS,超低功耗,OPEN CPU,GPS,GNSS,多通道,精简AT指令,esim,物联网
针对目前AMI复合通信网络对多种通信传输协议接入兼容性不佳,通信准确性和实时性难以兼顾的...分别在MQTT支持的三种通信质量服务级别下对信息传输的效率和服务器CPU处理能力进行测试,结果验证了该系统设计的可行性。
mqtt-realtime-chart-server是一个Express.js-MQTT-Socket.io应用程序,可与结合使用。 产品特点 服务器 发布并订阅MQTT主题(例如,电压) 使用websockets将收到的消息转发给客户端 客户 多系列折线图实时数据...
自带WEB API与WEB应用、自带Lot服务器应用 ,可定制集成为自带MQTT服务器,一切都免除了第三方服务软件的复杂安装配置过程。 10、完整的使用说明文档。 11、强大的技术团队支持。 该框架是应用方面的DEMO源码,MVC...
单片机具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。 单片机又称单片微控制器,它不是完成某一个逻辑功能...
物联大师是开源免费的物联网智能网关系统,内置MQTT、TCP Server/Client、... 系统采用Golang编程实现,支持多种操作系统和CPU架构,可以运行在智能网关上,也可以安装在现场的电脑或工控机上,还能部署到云端服务器。
系统采用Golang编程实现,支持多种操作系统和CPU架构,可以运行在智能网关上,也可以安装在现场的电脑或工控机上,还能部署到云端服务器。项目摒弃复杂的平台架构思维,远离微服务,从真实需求出发,注重用户体验,...
系统采用Golang编程实现,支持多种操作系统和CPU架构,可以运行在智能网关上,也可以安装在现场的电脑或工控机上,还能部署到云端服务器。项目摒弃复杂的平台架构思维,远离微服务,从真实需求出发,注重用户体验,...
这个项目是实验性的,目的是证明一个概念,不建议在生产中的系统中使用它。 MQTT协议:copyright:1999-2010 Eurotech,国际商业机器公司(IBM)。 版权所有。 协议的描述可以从[1]下载。 2. S7开发 TSPP [5]协议是...
移动NB模组M5311资料包(包括:相关驱动、应用层协议使用手册、硬件设计参考资料、AT指令集、太详细了)
mqtt-realtime-chart-client是一个Vue.js客户端应用程序,可与结合使用。 产品特点 客户 多系列折线图实时数据可视化 动态滑块,用于控制图表渲染频率(在N条消息后渲染图表) 这对于优化目的很有用,尤其是在高频...
消息消费者和提供者被安装在x86的机器上,配置为2.40G CPU和1.0GB内存,操作系统为Windows Server 2003 SP1,Broker被安装在一台x86机器上,配置为2.40G CPU和1.0GB内存,操作系统为Windows Server 2003 SP1。
.NET 的 Modbus TCP、Modbus UDP 和 Modbus RTU ...V4.4 HF1:修正 CPU 负载过大 Modbus TCP 服务器 V4.4:修正 Modbus RTU 和 MQTT V4.3 :修正了 Modbus 服务器模拟器的 Modbus RTU Webview 和服务器的 MQTT 功能
:将主机数据(内存,CPU,磁盘使用情况等)发送到MQTT代理 :将数据从Z-Wave设备发送到MQTT代理 :当我厌倦了CLI时可以使用GUI管理我的Docker容器 :face_with_tears_of_joy: :快速,安全的Web服务器,其他服务...
负载均衡的请求和事件(循环,随机,cpu使用,延迟,分片) 许多容错功能(断路器,隔板,重试,超时,后备) 插件/中间件系统 支持版本化服务 支持 服务混合 内置缓存解决方案(Memory,MemoryLRU,Redis) 可...