最近有台服务器的MQ应用占用内存比较偏高,如下:

但是看控制台本身内存中消息积压并不多,

查看rabbtmqctl发现,binary data和other data占据了绝大部分的内存,如下:

{memory,
[{total,124441400},
{connection_readers,5548680},
{connection_writers,605560},
{connection_channels,2798608},
{connection_other,7775480},
{queue_procs,23561696},
{queue_slave_procs,0},
{plugins,489128},
{other_proc,14147408},
{mnesia,2040288},
{mgmt_db,9741144},
{msg_index,1946696},
{other_ets,2006528},
}]},

binary(Memory used by shared binary data in the Erlang VM. In-memory message bodies show up here.)代表的是内存中的消息以及其他一些被queue或者exchange引用的元数据,但是在控制台里面有没有任何体现。

other_system:

Other memory used by Erlang. One contributor to this value is the number of available file descriptors。

看mq日志,发现服务器负载高导致响应慢或者OOM被killed之后,虽然进程本身还在,但收不到有些客户端的心跳,类似如下:

Missed heartbeats from client, timeout: 10s
Missed heartbeats from client, timeout: 10s
Missed heartbeats from client, timeout: 10s
Missed heartbeats from client, timeout: 10s
Missed heartbeats from client, timeout: 10s

跟应用的原开发者确认了下,有些客户端在异常后会不断的尝试重新连接MQ服务器,但是连接都建立了,但是随后心跳就异常了。

照理来说,MQ强制断开客户端连接后,相关的socket和内存占用会随之释放,但是出现异常的时候内存占用一直都很高、而且一两个小时后也没有下降到正常水平。

重启两个java应用后,MQ内存占用就立刻下来了,但是连接数和消费者数量和原来都一样。

这现象似乎和我们原来mysql出现的异常一样,服务端在某些地方可能存在非最常用特性被极为频繁的使用后,可能导致内存存在泄露的情况。

因为之前出现过两三次行情初始化和成交回报丢失的情况,所以趁着这次测试环境的异常大概找到了出现问题的规律,后续会在深入研究下rabbitMQ的binary和other_system里面到底是什么数据,这就又涉及到要分析erlang VM的内存dump才能精确确定了。

rabbitmq binary/other_system内存占用很高的更多相关文章

  1. Window下MySql 5.6 安装后内存占用很高的问题

    Window下MySql 5.6 安装后内存占用很高的问题 刚刚准备玩一把mysql,初学者 环境是window 7和window sever 2008, mysql是最新的5.6, 发现的问题是安装 ...

  2. CLR Profile解决内存占用过高

    CLR Profile解决内存占用过高的问题 炮哥:"嘿,哥们,忙啥呢,电脑卡成这逼样." 勇哥:"在用CLR Profile工具分析下FlexiPrint的内存占用情况 ...

  3. [2017-08-09]一则使用WinDbg工具调试iis进程调查内存占用过高的案例

    最近遇到一个奇葩内存问题,跟了三四天,把Windbg玩熟了,所以打算分享下. 症状简介 我们团队的DEV开发环境只有一台4核16G的win2012r2. 这台服务器上装了SqlServer.TFS(项 ...

  4. 【转】一则使用WinDbg工具调试iis进程调查内存占用过高的案例

    最近遇到一个奇葩内存问题,跟了三四天,把Windbg玩熟了,所以打算分享下. 症状简介 我们团队的DEV开发环境只有一台4核16G的win2012r2.这台服务器上装了SqlServer.TFS(项目 ...

  5. Spring cloud开发内存占用过高解决方法

    https://blog.csdn.net/wanhuiguizong/article/details/79289986 版权声明:本文为博主原创文章,转载请声明文章来源和原文链接. https:// ...

  6. [转帖]Linux中buff/cache内存占用过高解决办法

    Linux中buff/cache内存占用过高解决办法 https://www.cnblogs.com/rocky-AGE-24/p/7629500.html /proc/sys/vm/drop_cac ...

  7. 一个神奇的bug:OOM?优雅终止线程?系统内存占用较高?

    摘要:该项目是DAYU平台的数据开发(DLF),数据开发中一个重要的功能就是ETL(数据清洗).ETL由源端到目的端,中间的业务逻辑一般由用户自己编写的SQL模板实现,velocity是其中涉及的一种 ...

  8. Linux 内存 占用较高问题排查

    Linux 内存 占用较高问题排查 niuhao307523005 2019-04-24 14:31:55 11087 收藏 11展开一 查看内存情况#按 k 查看 free #按兆M查看 free ...

  9. 性能测试问题_Mysql数据库服务器的CPU占用很高

    MySQl服务器CPU占用很高 1.  问题描述 一个简单的接口,根据传入的号段查询号码归属地,运行性能测试脚本,20个并发mysql的CPU就很高,监控发现只有一个select语句,且表建立了索引 ...

随机推荐

  1. 关于移动开发的一些想法和认识--Android和iOS

    微信公众账号很久没更新了,发一点自己最近的想法和内容. 之前和朋友做了一个项目,现在在跟一些风投,大公司里面的几家在谈合作和投资的事宜,从这个过程中也了解到了一些信息. 关于移动平台的应用开发与游戏开 ...

  2. 移动web开发之像素和DPR

    × 目录 [1]定义 [2]分类 [3]缩放[4]DPR 前面的话 像素在web开发中几乎天天用到,但到底什么是像素,移动端和桌面端的像素有区别吗,缩放对像素有影响吗,视网膜屏幕和像素有什么关系?关于 ...

  3. JAVA设计模式《二》

    上一篇为大家介绍了一下设计模式中的责任链模式,本篇为大家介绍一下关于设计模式中的单例模式与模板方法模式.单例模式的作用在于,保证应用中某个实例有且只有一个,单例模式又被分为:饱汉模式与饿汉模式,两者的 ...

  4. Spring MVC 学习总结(一)——MVC概要与环境配置

    一.MVC概要 MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范,用一种将业务逻辑.数据.显示分离的方法组织代码,MVC主要作用是降低了视图与业务 ...

  5. Android调用手机摄像头使用MediaRecorder录像并播放

    最近在项目开发中需要调用系统的摄像头录像并播放. 在开发中遇到了两个问题,记录下: (1)开发过程中出现摄像头占用,启动失败,报错.但是我已经在onDestory()中关闭了资源. 报错原因:打开程序 ...

  6. 判断js数据类型和clone

    判断返回js数据类型 function judgeType(arg){//判断返回js数据类型 return Object.prototype.toString.call(arg).slice(8,- ...

  7. js cookie存储方法

    /*! * jQuery Cookie Plugin v1.4.0 * https://github.com/carhartl/jquery-cookie * * Copyright 2013 Kla ...

  8. 二、Sink例程

    1. Sink例程 CSR粗略的将audio蓝牙设备分为了两大类:sink和source设备,并分别提供了两类设备的例程,配置工具,说明文档.如对于sink设备,提供了sink app例程,SinkU ...

  9. UTF-8 BOM头

    BOM是什么 Unicode的学名是"Universal Multiple-Octet Coded Character Set",简称为UCS.UCS可以看作是"Unic ...

  10. JAVA - HashMap和HashTable

    1. HashMap 1)  hashmap的数据结构 Hashmap本质就是一个数组,只是当key值重复时,使用链表的方式来存储重复的key值(拉链法),注意:链表中存放的仍然是key值.如下图示: ...