开发者社区> 问答> 正文

阿里云监控/云盾Agent服务造成内存泄露的临时解决方案

昨天发现阿里云 linux 版中的 agent deamon 进程(aegis_client)有比较严重的内存泄漏问题:运行一段时间后物理内存开销从 2.5MB 飙升到了 72MB(基本上每天泄漏 2.5MB 左右)。

经过:
=======================================================
和客户经理反应,说是其它客户也反应过,帮我联系工程师。工程师要了我的 root 账号进去看了一圈,说是因为物理内存不够用了,造成频繁换页才会这样的,我当时就 faint 了:
1.我汇报的问题是你们的程序物理内存(RSS)开销从 2.5MB 飙升到 72MB,和虚存及换页机制无关。
2.我的物理内存利用率最近1个月内就没超过 50% 过,还有大半空闲的物理内存。
3.我的换页文件利用率最近1个月内一直稳定在 3.172%,也就是说换页文件根本没怎么用上过。
4.这些都是显而易见的信息,你管我要了 root 账号进去看了这么久,就个我这么个解释?还要我来帮你解读?小兄弟你是来实习的么?

他被我说的不大好意思了,说是去帮我问问开发组。后来给我打电话回复如下:
1.开发组承认 agent 有内存泄漏问题,但是他们 “解决” 了,解决的方法是:监视这个进程的内存泄露情况,一旦超过 100MB,就杀死这个进程并且重新启动它……我靠,这只能算是 workaround 好吧?这是解决问题的态度么?
2.我又问他那我自己可以配置这个 100MB 的 threshold 么?他说好像不行……
=======================================================


临时解决方案:
=======================================================
今天有时间,就进去看了一下,发现貌似其实是可以配置的,默认的 threshold 也不是 100MB,是 80MB。
linux 版的配置路径在 /usr/local/aegis/aegis_client/aegis_00_33/conf 下面(请把 aegis_00_33 替换成你正在运行的 agent 版本),配置文件名叫 aegiscli.cfg。用 vi 编辑它,将其中的 max_memory_use 配置项从 80 改为 8,然后 kill 并重启进程 即可。

又顺便看了下 Windows 版,发现也有类似的内存泄漏问题,Windows 上是云盾主动防御服务,修改方式类似,找到相应的配置目录,例如:C:\Program Files\Alibaba\Aegis\aegis_client\aegis_00_38\conf,编辑其中的 aegiscli.cfg 文件,将 max_memory_use 从 80 修改为 12,然后重启服务即可(Windows 版的进程启动开销比 linux 版大 4MB 左右)。
=======================================================



展开
收起
asbai 2014-05-10 19:08:43 28002 0
17 条回答
写回答
取消 提交回答
  • Re阿里云监控/云盾Agent服务造成内存泄露的临时解决方案
    问题还存在
    2015-08-22 19:19:15
    赞同 展开评论 打赏
  • Re阿里云监控/云盾Agent服务造成内存泄露的临时解决方案
    哈恩不错
    2015-05-28 11:40:21
    赞同 展开评论 打赏
  • Re阿里云监控/云盾Agent服务造成内存泄露的临时解决方案
    这个问题依旧存在,刚买的空间没几个IP,居然天天 Error establishing a database connection
    2015-03-16 19:07:56
    赞同 展开评论 打赏
  •       
    2014-08-03 18:00:32
    赞同 展开评论 打赏
  • 那个不是BUG,是cache了一些安全事件导致内存占用升高。

    在新版本己经得到了很大的优化。
    2014-07-31 10:14:33
    赞同 展开评论 打赏
  • Re阿里云监控/云盾Agent服务造成内存泄露的临时解决方案
    Windows的云盾也有内存泄露问题,提交了工单也是要root帐号,shit
    2014-07-30 23:44:13
    赞同 展开评论 打赏
  • 是啊,我也发现了,内存总飙升,这是个问题啊~每几天就需要重启一下~
    2014-07-30 11:22:50
    赞同 展开评论 打赏
  • Re阿里云监控/云盾Agent服务造成内存泄露的临时解决方案
    懂球帝
    2014-07-30 10:01:06
    赞同 展开评论 打赏
  • 不知道这个问题近期修复了没有!

    -------------------------

    希望有官方工作人员能回应下!

    2014-07-28 16:12:00
    赞同 展开评论 打赏
  • Re阿里云监控/云盾Agent服务造成内存泄露的临时解决方案
    多谢楼主
    2014-07-28 16:06:43
    赞同 展开评论 打赏
  • baiy.cn
    Re阿里云监控/云盾Agent服务造成内存泄露的临时解决方案
    引用第4楼服务器之家于2014-05-10 23:08发表的  :
    我本人一直很反感阿里云对系统里做的手脚,即便是有各种堂而皇之的理由,各个发行版自身,不管是CENTOS还是DEBIAN还是UBUNTU,每一个系统内官方安置的程序都是经过全球海量用户千锤百炼的,坑都踩完了,反观阿里云你强加到系统里的东西你怎么保证它没有问题?


    那倒是好办,直接把相应的 service/daemon 禁用就行了。为难的就是既想用云监控等功能,又不希望它出这种纰漏的……

    -------------------------

    Re阿里云监控/云盾Agent服务造成内存泄露的临时解决方案
    而且我发现 aegis 有个 quartz daemon,它会周期性地启动一些 Python 脚本来收集采样数据。这其实也很……,所有云监控中的常规性能采集工作其实都可以完全集成在 daemon 进程内部实现,这样周期性地 Launch 其它进程和脚本,既不高效也不紧凑。

    毕竟作为侵入式的 agent 服务,保持尽可能的高效和紧凑,力求对用户环境影响最小是非常重要的设计目标。


    我想也只有第三方用户自定义的监控项采集需要以如此的方式来实现。

    -------------------------

    Re阿里云监控/云盾Agent服务造成内存泄露的临时解决方案
    最近有发现每次 aegis_client 服务更新,都会重新覆盖掉之前的配置。麻烦 ali 的开发人员可以尊重用户的配置选择,在升级是保留用户修改的部分,谢谢。

    -------------------------

    Re阿里云监控/云盾Agent服务造成内存泄露的临时解决方案
    引用第15楼虎笑于2014-07-31 10:14发表的  :
    那个不是BUG,是cache了一些安全事件导致内存占用升高。

    这就太牵强了,你见过为了清缓存还要 kill 整个进程重启的么?
    2014-05-11 16:39:56
    赞同 展开评论 打赏
  • Re阿里云监控/云盾Agent服务造成内存泄露的临时解决方案
    楼主很有钻研精神。。
    2014-05-11 07:15:36
    赞同 展开评论 打赏
  • 顶一个
    2014-05-10 23:16:00
    赞同 展开评论 打赏
  • 我本人一直很反感阿里云对系统里做的手脚,即便是有各种堂而皇之的理由,各个发行版自身,不管是CENTOS还是DEBIAN还是UBUNTU,每一个系统内官方安置的程序都是经过全球海量用户千锤百炼的,坑都踩完了,反观阿里云你强加到系统里的东西你怎么保证它没有问题?
    2014-05-10 23:08:48
    赞同 展开评论 打赏
  • Re阿里云监控/云盾Agent服务造成内存泄露的临时解决方案
    汗一个。。。
    2014-05-10 21:42:10
    赞同 展开评论 打赏
  • 谢谢分享
    2014-05-10 21:39:58
    赞同 展开评论 打赏
  • 这个。。。确实。。有点。。。
    2014-05-10 21:30:18
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
《阿里云云拨测发布》PDF 立即下载