ELK|Kafka命令操作困扰

Sommaire de cet article :
  1. kafka安装
  2. 问题一
  3. JMX报错

kafka是一个分布式消息订阅系统,我司一直用它来做日志中转队列,配合ELK,一直表现很出色.当然,基本每次和它打交道的时候都是遇到队列堆积的情况,基本一年一次,去年是双十一,今年也是.之所以要记录一下,是因为同样的错误一年遇到一次,每次都要重新学习一遍,好记性不如赖笔头.

kafka安装

首先说明一下背景,kafka是通过容器运行的.
类似

docker run -dt \
 --restart=always \
 --name=kafka1 \
 -h kafka1 \
 -p 9092:9092 \
 -p 9999:9999 \
 -v /data:/kafka \
 -v /opt/kafka/logs:/opt/kafka/logs \
 -e KAFKA_ZOOKEEPER_CONNECT=xx.xx.xx.xx:2181\
 -e KAFKA_BROKER_ID=1 \
 -e KAFKA_HEAP_OPTS="-Xmx20G -Xms20G" \
 wurstmeister/kafka:1.0.0

问题一

JVM报错误无法分配内存:Cannot allocate memory

bash-4.3# kafka-topics.sh

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000002c0000000, 21474836480, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 21474836480 bytes for committing reserved memory.
# An error report file with more information is saved as:
# //hs_err_pid3290.log


这个问题的原因是因为设置了环境变量KAFKA_HEAP_OPTS="-Xmx20G -Xms20G".估计每次运行java命令都会按这个配置尝试分配20G内存吧,因为kafka主进程运行已经用去了20G,自然不可能再分配出来这么多了.
解决办法也很简单,直接去掉这个设置就好了

bash-4.3# unset KAFKA_HEAP_OPTS

JMX报错

一波刚平,一波又起.再次运行命令还是报错

bash-4.3# kafka-topics.sh
Error: JMX connector server communication error: service:jmx:rmi://kafka1:9999


JMX是Java Management Extensions,它是一个Java平台的管理和监控接口。用来监控kafka运行情况的.基于前面的经验,这个问题大概率也是环境变量引起的.
解决

unset JMX_PORT

然后就可以愉快的玩耍了

弄了一个微信群欢迎正常学习elk的朋友扫码交流.
elk

转载请注明: 转自Rainbird的个人博客
   本文链接: ELK|Kafka命令操作困扰


相关博文

About rainbird

IOS攻城狮
This entry was posted in ELK and tagged , , , , . Bookmark the permalink.

发表评论