kafka报内存溢出

尚浩宇 发布于 2017/05/23 16:59
阅读 479
收藏 0

环境是压测,模拟1000并发。

kafka运行一段时间自动停止,并且没有任何异常log

将其调至前台运行,发现运行一段时间后,抛出内存溢出异常,

此时设置内存是1G,将其调至4G,再次运行,比之前运行时间长,但依然会发生内存溢出异常。

求高手解决

加载中
0
纳兰清风
纳兰清风
有没有可能是消息太大的导致需要老年代开存储消息完成的fullgc,猜的……勿喷……
尚浩宇
尚浩宇
回复 @纳兰清风 : 消息就是一个实体转成json,也就1K左右
纳兰清风
纳兰清风
@尚浩宇 我意思是可能单条消息过大,导致只能在老年代分配空间来存储,你可以问下单条消息的大小。另外每秒钟存入八九百的消息对kafka来说那都不叫事
尚浩宇
尚浩宇
你说的有道理,如果是数据量太大了,我刚问了下,每秒钟存入800~900条数据,一般运行半小时会自杀,144万~162万条数据并不多,唯一的是消费的比较慢,一秒钟一条数据
0
凡梦星尘
凡梦星尘
kafka的版本是多少?是集群还是单点服务?
尚浩宇
尚浩宇
版本是最新的0.10,单机模式,kafka分配内存4G
0
Feng_Yu
Feng_Yu

kafka你可以认为是内存数据库,消息保存在内存,定期持久化到硬盘上。当你的内存有限的时候,请设置日志滚动策略,默认记得保存7天,具体的配置参考kafka文档。你只保持2小时的消息,看看还会内存溢出吗?

c
cootie
回复 @尚浩宇 : 您好,不太理解保存的日志文件时间和jvm内存有什么关系
尚浩宇
尚浩宇
好的,谢谢
0
混分小菜鸟
混分小菜鸟

kafka能够设置多个信息块的,消费慢就多开几个,减轻下游的压力。压测本身会造成段时间内的数据流特别大,其中的短板的影响就会被放大。压测本身就是测试系统的抗压能力,结合自己的实际情况,拿出一个可行的方案。

尚浩宇
尚浩宇
看来得好好看看kafka的东西了,谢谢了
返回顶部
顶部