linux不停机释放日志,Kafka在线修改topic日志保存时长(不停机,不重启)
使用场景:
某些时候,当几个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日志保存时长(不停机,不重启)相关推荐
- php默认日志位置,Laravel 修改默认日志文件名称和位置的例子
修改默认日志位置 我们平常的开发中可能一直把laravel的日志文件放在默认位置不会有什么影响,但如果我们的项目上线时是全量部署,每次部署都是git中最新的代码,那这个时候每次都会清空我们的日志,显示 ...
- 解决SqlServer2008修改表后保存时出现“save changes is not permitted…”问题
在使用SQL Server 2008 版本的时候,当我Design更改表然后保存时出现如下错误: Saving changes is not permitted. The change ...
- kafka 在线修改副本数
背景 前段时间由于集群各台机器配置不一样,导致部分机器磁盘吃紧.定位发现kafka log数据占了一半的容量,而且某一个topic的数据惊人,50个partition,每个partition24G, ...
- oracle更改归档日志路径,oracle修改归档日志的路径
在ORACLE10G中,默认的归档路径为$ORACLE_BASE/flash_recovery_area.对于这个路径, ORACLE有一个限制,就是默认只能有2G的空间给归档日志使用,可以使用下面两 ...
- oracle日志文件大小规则,修改oracle日志文件大小
1.创建2个新的日志组 alter database add logfile group 4 ('D:\ORACLE\ORADATA\ORADB\REDO04_1.LOG') size 1024k; ...
- PDF文件修改后,保存时出现:文档无法保存。读取文档时出现问题(135)
问题描述:从网上下了本电子书,阅读的过程中想添加些书签,结果出现如下添加后无法保存的问题: 在参考这篇博文后:https://blog.csdn.net/ygm_linux/article/det ...
- jira修改配置项 每天工作时长
https://blog.csdn.net/weixin_33753845/article/details/859342 ./atlassian-jira/WEB-INF/classes/jpm.xm ...
- kafka动态修改日志保存时间
修改对应的topic的保存时长3天 ./kafka-topics.sh --zookeeper node1:2181 -topic xxxx --alter --config retention.ms ...
- kafka常用命令 topic创建 删除 设置保存时间 消费情况 zookeeper 启动停止
启动kafka sh kafka-server-start.sh -daemon ../config/server.properties 停止kafka sh kafka-server-stop.sh ...
- 关于手机相机的快门时长修改
我想问下关于手机相机应用中的快门时间能否更改最大快门时长.如下图中的小米相机,专业模式下最长快门为32S.能否通过文件修改增加其快门时长?或者写一个相机应用,主要是拥有长快门,实现的可能性是多少,有什 ...
最新文章
- programcreek
- Visual Studio Code启动项目
- php mysql 插入多条数据_雷林鹏分享:PHP MySQL 插入多条数据
- treasure what you have now
- factorymenu什么意思_MENU是什么意思
- c++构造函数和析构函数的调用顺序研究
- SAP各种产品中的客户主数据模型建模详解
- 登陆xp系统,无法显示桌面
- JS监听DOM宽高的变化
- Mac OS X将CSV格式转换为Excel文档格式,Excel转CSV中文乱码问题
- SAP License:当变态的与病态的需求来临,你是否说不?
- MySQL----数据的显示位宽
- Pr 2021快速入门教程,如何新建项目及首选项的基础设置?
- 有道网页翻译chrome插件---我用过的最好的翻译插件
- 海思AI芯片3559A方案学习(一)
- mysql 向上取整_mysql的取整函数
- Android 游戏 - 聚合SDK
- MPB:山大倪金凤组-​​白蚁肠道微生物样品收集与制备
- 《深度学习》学习笔记
- 2021年全球与中国汽车ABS和ESC行业市场规模及发展前景分析
热门文章
- 【手写字母识别】基于matlab GUI模板匹配手写大写字母识别【含Matlab源码 115期】
- 【TWVRP】基于matalb粒子群算法求解带时间窗的车辆路径规划问题【含Matlab源码 1272期】
- 【人脸识别】基于matlab GUI人脸实时检测与跟踪【含Matlab源码 673期】
- SPSS 分层回归(图文+数据集)【SPSS 027期】
- 负载均衡策略_高负荷小区负载均衡策略建议
- Kardashev量表和AI:可能的床友
- php 的主要功能和特点,PHPMailer的主要功能特点和简单使用说明
- 有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?
- sqlmap自动扫描注入点_SQLMAP使用指南[学员作品]
- 00.springboot 操作数据库的封装