IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Windwos bat进程守护 解决 kafka2.8.0 Failed to clean up log for __consumer_offsets -> 正文阅读

[Java知识库]Windwos bat进程守护 解决 kafka2.8.0 Failed to clean up log for __consumer_offsets

windwos环境下使用kafka2.8.0,出现 ERROR Failed to clean up log for __consumer_offsets-)

问题参考

ERROR Failed to clean up log for __consumer_offsets-42 in dir C:\tmp\kafka-logs due to IOException (kafka.server.LogDirFailureChannel)
java.nio.file.FileSystemException: C:\tmp\kafka-logs\__consumer_offsets-42\00000000000000000000.timeindex.cleaned ->
C:\tmp\kafka-logs\__consumer_offsets-42\00000000000000000000.timeindex.swap: 另一个程序正在使用此文件,进程无法访问。
....
java.nio.file.FileSystemException

Windows Kafka ERROR Failed to clean up log for __consumer_offsets
[Kafka错误]-----kafka在window下出现另一个程序正在使用此文件,进程无法访问的错误

原因

kafka日志清理策略触发,在window环境下,在打开需要清理的日志的同时,对该文件进行重命名操作是不被允许的(linux环境下可以),从而导致kafka宕机。

方案一:修改日志清理策略,将日志清理时间修改为无穷(-1),使kafka数据日志永久存储 缺点:(1)磁盘空间会不断增大
方案二:在window上搭建虚拟机(docker同理,且更麻烦),然后在虚拟机中部署kafka 缺点:(1)运维人员需要懂点linux运维知识(2)增加内存消耗
方案三:上面文章中有写到重新打补丁包,我试过在2.8.0-2.13.0版本中重新打包,结果还是不行。

解决: bat 进程守护运行

于是乎 用个简单的bat脚本 对kafka的启动进程守护, 1.每10秒检查端口运行状态 2.注意:重新启动时会 清空kafka的日志文件

kafka_run_daemon.bat

@echo off

:: 执行的命令
set _startBat=D:\software\kafka\start.bat
:: 日志所在位置
set _kafkaLogs=D:\software\kafka\tmp


:checkstart
:: 端口方式进行检查
netstat -ano | findstr 0.0.0.0 | findstr :19092 | findstr LISTENING > nul
if %ERRORLEVEL% EQU 0 ( 
echo 运行正常
GOTO checkag ) else ( 
echo 没有运行
GOTO startsvr  )

 

:startsvr
echo %time% kafka运行状态异常、正在重新启动

:: 检查 zookeeper
echo %time% 检查zookeeper状态
netstat -ano | findstr 0.0.0.0 | findstr :12181 | findstr LISTENING > nul
if %ERRORLEVEL% EQU 0 ( 
echo %time% zookeeper正在运行
FOR /F "tokens=5" %%P IN ('netstat -a -n -o ^| findstr :12181') DO TaskKill.exe  /PID %%P  -t -f 
echo %time% zookeeper结束完成
 ) else ( 
echo %time% zookeeper没有运行
)

:: 删除tmp zookeepr和kafka的运行日志
echo %time% 删除tmp zookeepr和kafka的运行日志
rd/s/q %_kafkaLogs%
echo %time% 日志清理完成

:: 开始启动
echo %time% 开始启动
start %_startBat%
set/p=.<nul
for /L %%i in (1 1 10) do set /p a=.<nul&ping.exe /n 2 127.0.0.1>nul
echo .
echo Wscript.Sleep WScript.Arguments(0) >%tmp%\delay.vbs 
cscript //b //nologo %tmp%\delay.vbs 40000 
::计划40秒完成启动
echo %time%  启动操作完成,检查存活状态
GOTO checkstart


:checkag
echo %time% 程序运行正常,10秒后继续检查...
echo Wscript.Sleep WScript.Arguments(0) >%tmp%\delay.vbs 
cscript //b //nologo %tmp%\delay.vbs 10000 
GOTO checkstart

start.bat 卡夫卡启动脚本

start .\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties
timeout 10
start .\bin\windows\kafka-server-start.bat .\config\server.properties
exit

使用方法 ,将两个bat复制到kafka根目录,配置好bat 里面的日志位置(此处将kafka和zookeeper都放在同一tem文件夹),
直接运行 kafka_run_daemon.bat,也可添加到系统服务中去

本地测试,挂掉后可以正常重启:

在这里插入图片描述

无黑窗口运行模式

在上面的进程守护基础之上

run_zookeeper.vbs

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell") 
WinScriptHost.Run ".\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties", 0, True 
Set WinScriptHost = Nothing

run_kafka.vbs

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell") 
WinScriptHost.Run ".\bin\windows\kafka-server-start.bat .\config\server.properties", 0, True 
Set WinScriptHost = Nothing

start_vbs.bat

start wscript runZookeeper.vbs
timeout 10
start wscript runKafka.vbs
exit

run_zookeeper.vbs和run_kafka.vbs复制到kafka根目录修改 kafka_run_daemon.bat脚本中的_startBat**(执行命令)=start_vbs.bat,
运行kafka_run_daemon.bat, 则kafka和zookeeper将不会出现黑窗口。**

这不是好的解决办法 ~~有其他解决办法的话,望看到的大哥们告知一下。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-24 14:48:21  更:2021-10-24 14:49:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:21:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码