使用场景:

某些时候,当几个topic生产者突发产生大量消息时,会造成磁盘空间紧张,这时,除了增加磁盘,另一个方法就是修改配置文件,将日志的保存时间修改小一点,但这两种方案,都必须停机和重启kafka,显然,这在生产集群上,是不能这么处理的。这里,可以通过在线修改单个topic的配置,以覆盖默认配置,临时解决磁盘空间紧张的问题。

优点:在线修改,不需要重启和停机

修改后,新的配置会在 log.retention.check.interval.ms 时间内被检查并应用到整个集群,该值在 kafka/config/server.properties 中配置,默认为 300 秒

注意,修改前日志保存时长,必然会清除掉超过这个时长的旧数据,在生产环境中,这需要和业务方共同评估和确认

下面以修改名为 my_test_topic 的 topic 为例

#1,查看当前topic配置

./kafka-topics.sh --describe --topic my_test_topic --zookeeper test.myzk.com:2181/kafkacluster

#2,调整topic配置

./kafka-topics.sh --topicmy_test_topic --zookeeper test.myzk.com:2181/kafkacluster --alter --config retention.ms=43200000

# 时长毫秒 43200000ms=12h

#3,检查修改的配置是否生效

同第一步,查看输出的第一行,类似如下:

Topic:__consumer_offsets PartitionCount:50 ReplicationFactor:3 Configs:segment.bytes=104857600,delete.retention.ms=86400000,retention.ms=43200000,cleanup.policy=delete,compression.type=producer

其他可选的调整参数:

segment.bytes=104857600       #单个日志文件大小,默认1G

delete.retention.ms=86400000 #对于压缩日志保留的最长时间,也是客户端消费消息的最长时间,与retention.ms的区别在于一个控制未压缩数据,一个控制压缩后的数据

retention.ms=86400000            #如果使用“delete”的retention策略,这项配置就是指删除日志前日志保存的时间

cleanup.policy=delete               #默认方式 delete 将会丢弃旧的部分 compact 将会进行日志压缩

compression.type=producer     #压缩类型,此配置接受标准压缩编码 gzip, snappy, lz4 ,另外接受 uncompressed 相当于不压缩, producer 意味着压缩类型由producer指定

./zookeeper-shell.sh test.myzk.com:2181/kafkacluster  #查看zk中kafka集群信息

另外,需要注意的是:

kafka 0.10+ 之后的版本,有个 __consumer_offsets 的topic也是需要清理的,需要定期注意该topic占用空间情况

生产环境kafka内核优化参数

vm.min_free_kbytes=4194304 即4G 系统16C32G内存

cat /proc/sys/vm/min_free_kbytes

该值表示强制Linux VM最低保留多少空闲内存 单位Kbytes

当可用内存低于该参数时,系统开始回收cache内存,以释放内存,直到可用内存大于该值

目的:让系统更加积极的回收cache内存

vm.zone_reclaim_mode=1

cat /proc/sys/vm/zone_reclaim_mode

管理当一个内存区域zone内部的内存耗尽时,是从其内部进行内存回收还是可以从其他zone进行回收

0 关闭zone_reclaim模式,允许从其他zone或NUMA节点回收内存[默认]

1 打开zone_reclaim模式,这样内存回收只会发生在本地节点内

2 在本地回收内存时,可以将cache中的脏数据写回硬盘,以回收内存

4 可以用swap方式回收内存

目的:限制内存回收不跨zone

清空cache (可选)

echo 1 > /proc/sys/vm/drop_caches

生产集群参数参考

zookeeper

zoo.cfg 配置文件

Shell

1

2

3

4

5

6

7

8

9

10

11

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/server/zkdata

clientPort=2181

maxClientCnxns=600

autopurge.snapRetainCount=60

autopurge.purgeInterval=24

server.1=192.168.1.100:2888:3888

server.2=yyyy:2888:3888

server.3=zzzz:2888:3888

echo "1">/data/server/zkdata/myid

./zkServer.sh status

zookeeper日志清理zookeeper日志清理

./zkCleanup.sh  /data/server/zookeeper/data -n 100

./zkCleanup.sh 参数1 -n 参数2

参数1,zk data目录,即zoo.cfg文件中dataDir值

参数2,保存最近的多少个快照

kafka

server.properties 配置文件

Shell

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

broker.id=0

listeners=PLAINTEXT://192.168.1.100:9092

port=9092

host.name=192.168.1.100

num.network.threads=3

num.io.threads=8

socket.send.buffer.bytes=1024000

socket.receive.buffer.bytes=1024000

socket.request.max.bytes=104857600

log.dirs=/data/server/kafkadata

num.partitions=3

num.recovery.threads.per.data.dir=1

log.retention.hours=72

log.segment.bytes=1073741824

log.retention.check.interval.ms=300000

zookeeper.connect=192.168.1.100:2181,yyyy:2181,zzzz:2181/kafkacluster

zookeeper.connection.timeout.ms=30000

default.replication.factor=3

delete.topic.enable=true

auto.create.topics.enable=true

在kafka启动脚本中,需要添加JMX的支持,方便在kafkamanager中查看到更加丰富的数据

kafka-server-start.sh

Shell

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

#!/bin/bash

if[$# -lt 1 ];

then

echo"USAGE: $0 [-daemon] server.properties [--override property=value]*"

exit1

fi

base_dir=$(dirname$0)

if["x$KAFKA_LOG4J_OPTS"="x"];then

exportKAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:$base_dir/../config/log4j.properties"

fi

if["x$KAFKA_HEAP_OPTS"="x"];then

exportKAFKA_HEAP_OPTS="-Xmx6G -Xms6G"

exportJMX_PORT="8999"

exportKAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true

-Dcom.sun.management.jmxremote.authenticate=false

-Dcom.sun.management.jmxremote.ssl=false

-Djava.rmi.server.hostname=192.168.1.100

-Djava.net.preferIPv4Stack=true"

fi

EXTRA_ARGS="-name kafkaServer -loggc"

COMMAND=$1

case$COMMANDin

-daemon)

EXTRA_ARGS="-daemon "$EXTRA_ARGS

shift

;;

*)

;;

esac

exec$base_dir/kafka-run-class.sh$EXTRA_ARGSkafka.Kafka"$@"

使用supervisor管理zookeeper和kafka

Shell

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

[program:zookeeper]

directory=/data/server/zookeeper

command=shbin/zkServer.shstart-foreground

numprocs=1

user=kafka

autostart=true

autorestart=true

stdout_logfile=/data/server/zookeeper/logs/zookeeper.log

redirect_stderr=true

priority=5

[program:kafka]

directory=/data/server/kafka

command=/bin/bashbin/kafka-server-start.shconfig/server.properties

numprocs=1

user=kafka

autostart=true

autorestart=true

stdout_logfile=/data/server/kafka/logs/kafka.log

redirect_stderr=true

stdout_logfile_maxbytes=1GB

priority=6

kafka-manager

让一般用户免密登录,且只有查看权限:

修改conf/application.conf

Shell

1

2

3

4

5

6

application.features=[""]

#application.features=["KMClusterManagerFeature","KMTopicManagerFeature","KMPreferredReplicaElectionFeature","KMReassignPartitionsFeature"]

...

basicAuthentication.enabled=false

#basicAuthentication.enabled=true

#basicAuthentication.enabled=${?KAFKA_MANAGER_AUTH_ENABLED}

topic 操作

Delete Topic 删除 topic

Reassign Partitions 平衡集群负载

Add Partitions 增加分区

Update Config Topic 配置信息更新

Manual Partition Assignments 手动为每个分区下的副本分配 broker

Generate Partition Assignments 系统自动为每个分区下的副本分配 broker

一般而言,手动调整、系统自动分配分区和添加分区之后,都需要调用 Reassign Partition

Shell

1

2

3

4

5

6

7

8

9

10

11

[program:kafka-manager]

directory=/data/server/kafka-manager

command=shbin/kafka-manager-Dconfig.file=conf/application.conf-Dhttp.port=9000

numprocs=1

user=kafka

autostart=true

autorestart=true

stdout_logfile=/data/server/kafka-manager/logs/kafka-manager.log

redirect_stderr=true

stdout_logfile_maxbytes=1GB

priority=6

喜欢 (4)or分享 (0)

linux不停机释放日志,Kafka在线修改topic日志保存时长(不停机,不重启)相关推荐

  1. php默认日志位置,Laravel 修改默认日志文件名称和位置的例子

    修改默认日志位置 我们平常的开发中可能一直把laravel的日志文件放在默认位置不会有什么影响,但如果我们的项目上线时是全量部署,每次部署都是git中最新的代码,那这个时候每次都会清空我们的日志,显示 ...

  2. 解决SqlServer2008修改表后保存时出现“save changes is not permitted…”问题

            在使用SQL Server 2008 版本的时候,当我Design更改表然后保存时出现如下错误: Saving changes is not permitted. The change ...

  3. kafka 在线修改副本数

    背景  前段时间由于集群各台机器配置不一样,导致部分机器磁盘吃紧.定位发现kafka log数据占了一半的容量,而且某一个topic的数据惊人,50个partition,每个partition24G, ...

  4. oracle更改归档日志路径,oracle修改归档日志的路径

    在ORACLE10G中,默认的归档路径为$ORACLE_BASE/flash_recovery_area.对于这个路径, ORACLE有一个限制,就是默认只能有2G的空间给归档日志使用,可以使用下面两 ...

  5. oracle日志文件大小规则,修改oracle日志文件大小

    1.创建2个新的日志组 alter database add logfile group 4 ('D:\ORACLE\ORADATA\ORADB\REDO04_1.LOG') size 1024k; ...

  6. PDF文件修改后,保存时出现:文档无法保存。读取文档时出现问题(135)

      问题描述:从网上下了本电子书,阅读的过程中想添加些书签,结果出现如下添加后无法保存的问题: 在参考这篇博文后:https://blog.csdn.net/ygm_linux/article/det ...

  7. jira修改配置项 每天工作时长

    https://blog.csdn.net/weixin_33753845/article/details/859342 ./atlassian-jira/WEB-INF/classes/jpm.xm ...

  8. kafka动态修改日志保存时间

    修改对应的topic的保存时长3天 ./kafka-topics.sh --zookeeper node1:2181 -topic xxxx --alter --config retention.ms ...

  9. kafka常用命令 topic创建 删除 设置保存时间 消费情况 zookeeper 启动停止

    启动kafka sh kafka-server-start.sh -daemon ../config/server.properties 停止kafka sh kafka-server-stop.sh ...

  10. 关于手机相机的快门时长修改

    我想问下关于手机相机应用中的快门时间能否更改最大快门时长.如下图中的小米相机,专业模式下最长快门为32S.能否通过文件修改增加其快门时长?或者写一个相机应用,主要是拥有长快门,实现的可能性是多少,有什 ...

最新文章

  1. programcreek
  2. Visual Studio Code启动项目
  3. php mysql 插入多条数据_雷林鹏分享:PHP MySQL 插入多条数据
  4. treasure what you have now
  5. factorymenu什么意思_MENU是什么意思
  6. c++构造函数和析构函数的调用顺序研究
  7. SAP各种产品中的客户主数据模型建模详解
  8. 登陆xp系统,无法显示桌面
  9. JS监听DOM宽高的变化
  10. Mac OS X将CSV格式转换为Excel文档格式,Excel转CSV中文乱码问题
  11. SAP License:当变态的与病态的需求来临,你是否说不?
  12. MySQL----数据的显示位宽
  13. Pr 2021快速入门教程,如何新建项目及首选项的基础设置?
  14. 有道网页翻译chrome插件---我用过的最好的翻译插件
  15. 海思AI芯片3559A方案学习(一)
  16. mysql 向上取整_mysql的取整函数
  17. Android 游戏 - 聚合SDK
  18. MPB:山大倪金凤组-​​白蚁肠道微生物样品收集与制备
  19. 《深度学习》学习笔记
  20. 2021年全球与中国汽车ABS和ESC行业市场规模及发展前景分析

热门文章

  1. 【手写字母识别】基于matlab GUI模板匹配手写大写字母识别【含Matlab源码 115期】
  2. 【TWVRP】基于matalb粒子群算法求解带时间窗的车辆路径规划问题【含Matlab源码 1272期】
  3. 【人脸识别】基于matlab GUI人脸实时检测与跟踪【含Matlab源码 673期】
  4. SPSS 分层回归(图文+数据集)【SPSS 027期】
  5. 负载均衡策略_高负荷小区负载均衡策略建议
  6. Kardashev量表和AI:可能的床友
  7. php 的主要功能和特点,PHPMailer的主要功能特点和简单使用说明
  8. 有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?
  9. sqlmap自动扫描注入点_SQLMAP使用指南[学员作品]
  10. 00.springboot 操作数据库的封装