Kafka錯誤:window下運行一段時間后自動掛掉/宕機


原文地址:https://blog.csdn.net/u010637366/article/details/107790497

kafka在window下出現另一個程序正在使用此文件,進程無法訪問的錯誤

前言------對於只想解決這個問題的程序猿們,可以直接跳到"解決"

對於只想解決這個問題的程序猿們,可以直接跳到"解決"

對於只想解決這個問題的程序猿們,可以直接跳到"解決"

對於只想解決這個問題的程序猿們,可以直接跳到"解決"

1.背景

之前使用kafka都是在Linux環境下的,沒有出現什么kafka本身的問題。但是,目前在做的一個項目需要兼容Window和Linux,在Window環境下使用Kafka時才發現kafka本身對於window的兼容不如Linux。

2.問題

window下對kafka進行測試的時候,發現kafka在上線一段時間之后,出現了錯誤:

另一個程序正在使用文件,進程無法訪問。

 

 

3.原因

kafka日志清理策略觸發,在window環境下,在打開需要清理的日志的同時,對該文件進行重命名操作是不被允許的(linux環境下可以),從而導致kafka宕機。

網上的解決方案最多的就是“清空kafka的日志文件然后重啟kafka”,這種解決方式在生產環境下顯然是不現實的。所以在一開始我又針對情況得出以下兩種解決方案:

方案一:修改日志清理策略,將日志清理時間修改為無窮(-1),使kafka數據日志永久存儲
缺點:(1)磁盤空間會不斷增大
方案二:在window上搭建虛擬機(docker同理,且更麻煩),然后在虛擬機中部署kafka
缺點:(1)運維人員需要懂點linux運維知識(2)增加內存消耗

顯然,這兩種方案的缺點都讓我無法忍受,所以我把視線轉向kafka社區尋求幫助。點擊此處膜拜大神們的探討

據了解,原來kafka在window下的這個問題,還並不沒有想象中的那么容易,官方目前為止也沒有解決方案。換句話說(你們就不要在window下使用kafka啦!)

方案三:不過即便如此,在window下使用kafka的需求還是存在的,所以還是有很多大神們在關注並提出一些解決方案的。其中就有一位大神針對這個問題對kafka源碼進行了二次開發。經過測試,他的這個方案在window下確實解決了問題,使得kafka可以在window下使用。但是對於這個方案,kafka的contributor說可能不太安全(就是不能將該補丁整合到官方中)。

4.解決(尾部有提供編譯好的kafka包下載鏈接)

雖然kafka官方說該補丁不太安全,但是官方在目前為止又沒有什么作為。而需求確是實實在在存在的,所以在一番考慮之下,我還是打算采用方案三的方式,一勞永逸的解決問題,所以接下來我們就要將該補丁打進,並重新編譯kafka。

4.1kafka補丁版本下載

下載該作者的kafka補丁版本

https://github.com/apache/kafka/tree/0baf9c158b5681a55df4de3a0e6193d32b1433ff

4.2編譯kafka補丁版本

由於kafka編譯是通過gradle的,所以需要先配置好gradle

關於如何配置gradle可以參考這篇文章(轉載來的,侵權即刪)------Windows下gradle的安裝與配置

關於如何編譯kafka,可以參考github------如何使用gradle編譯kafka

編譯完之后,就可以得到一個可以在window下使用的kafka包了。

本着“復制-粘貼“的理念(畢竟編譯源碼還是挺耗時間的),這里提供一個我編譯好的kafka包下載鏈接,下載直接使用即可

5.懶人福音

下載鏈接:https://pan.baidu.com/s/1loRZdolXE48Ugn4t7sEphg 
提取碼:90xz 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM