Kafka经纪人每天都在崩溃 - OOM杀手

时间:2018-01-24 08:22:08

标签: linux apache-kafka

我有一个3 kafka经纪人版本0.10.2.1。每个经纪人都拥有自己的主机2 cpu / 16G RAM,此外我们使用docker来包装经纪人流程。

问题如下: 几乎每一天我们都会看到我们所有的卡夫卡客户都失败了10分钟。 一开始我以为它与Kafka No broker in ISR for partition有关 但过了一段时间后,我发现经纪人因OOM杀手而崩溃。

在我发现它是OOM杀手之前,我还玩过Xmx和Xms。我有:

-Xmx2048M -Xms2048M

-Xmx4096M -Xms2048M

两者的行为相同

此外,目前我们还没有ulimit

>> ulimit
unlimited

less kern.log

日志:

Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761019] run-parts invoked oom-killer: gfp_mask=0x26000c0, order=2, oom_score_adj=0
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761022] run-parts cpuset=/ mems_allowed=0
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761026] CPU: 1 PID: 12266 Comm: run-parts Not tainted 4.4.0-59-generic #80-Ubuntu
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761027] Hardware name: Xen HVM domU, BIOS 4.2.amazon 02/16/2017
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761029]  0000000000000286 000000004811d7da ffff880036967af0 ffffffff813f7583
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761031]  ffff880036967cc8 ffff880439f2f000 ffff880036967b60 ffffffff8120ad5e
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761033]  ffffffff81cd2dc7 0000000000000000 ffffffff81e67760 0000000000000206
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761036] Call Trace:
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761041]  [<ffffffff813f7583>] dump_stack+0x63/0x90
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761044]  [<ffffffff8120ad5e>] dump_header+0x5a/0x1c5
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761048]  [<ffffffff81192722>] oom_kill_process+0x202/0x3c0
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761049]  [<ffffffff81192b49>] out_of_memory+0x219/0x460
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761052]  [<ffffffff81198abd>] __alloc_pages_slowpath.constprop.88+0x8fd/0xa70
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761054]  [<ffffffff81198eb6>] __alloc_pages_nodemask+0x286/0x2a0
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761056]  [<ffffffff81198f6b>] alloc_kmem_pages_node+0x4b/0xc0
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761060]  [<ffffffff8107ea5e>] copy_process+0x1be/0x1b70
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761063]  [<ffffffff81391bcc>] ? apparmor_file_alloc_security+0x5c/0x220
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761066]  [<ffffffff811ed05a>] ? kmem_cache_alloc+0x1ca/0x1f0
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761070]  [<ffffffff81347bd3>] ? security_file_alloc+0x33/0x50
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761073]  [<ffffffff810caf11>] ? __raw_callee_save___pv_queued_spin_unlock+0x11/0x20
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761074]  [<ffffffff810805a0>] _do_fork+0x80/0x360
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761076]  [<ffffffff81080929>] SyS_clone+0x19/0x20
Jan 23 06:25:16 kafka10-172-40-103-177 kernel: [16504862.761080]  [<ffffffff818384f2>] entry_SYSCALL_64_fastpath+0x16/0x71

而且......

Jan 24 06:25:25 kafka10-172-40-103-177 kernel: [16591270.954463] Out of memory: Kill process 16123 (java) score 134 or sacrifice child
Jan 24 06:25:25 kafka10-172-40-103-177 kernel: [16591270.958609] Killed process 16123 (java) total-vm:11977548kB, anon-rss:2035780kB, file-rss:67848kB

有关如何处理此事的任何建议?

2 个答案:

答案 0 :(得分:2)

我们发现了这个问题。 首先我要说的是,为机器添加更多RAM也解决了这个问题,但它是&#34;昂贵的解决方案&#34;

问题如下: 自从我使用EC2 ubuntu发行版以来,我在我的所有集群中同时获得了每日crontabs。其中一个脚本是mlocate这个脚本显然占用了太多资源。

我认为由于所有kafka集群都有IO和内存的问题,经纪人试图使用更多的内存,然后OOM杀手杀死了他们。 当我的3个经纪人中有2个人失业时,一些服务已经失效。

所以解决方案是:

  1. 将crontab更改为在每天的不同时段工作 经纪人。

  2. 停用mlocate

答案 1 :(得分:1)

我也面临同样的问题,下面提到的博客帮助了我:

https://docs.confluent.io/current/kafka/deployment.html

How to decide Kafka Cluster size

https://community.hortonworks.com/articles/80813/kafka-best-practices-1.html

请确保所有经纪商都启用了交换。