apache-kafka - 一段时间后,kafka 服务器在 Windows 环境中崩溃
问题描述
我目前正在尝试一些测试,其中包括 Kafka 发送和接收消息。在我的应用程序中,我有一个简单的 kafka 生产者,它定期生成消息,Kafka 接收器应用程序接收它。但是在运行此应用程序大约 36-37 小时后,Kafka 服务器因以下错误而崩溃。我也经历过这个,但这似乎与我目前面临的问题没什么不同。我在本地的 Windows 机器上使用 Kafka 2.4.0。
java.nio.file.FileSystemException: C:\kafka\temp\kafka-logs\__consumer_offsets-9\00000000000000000000.timeindex.cleaned -> C:\kafka\temp\kafka-logs\__consumer_offsets-9\00000000000000000000.timeindex.swap: The process cannot access the file because it is being used by another process.
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileCopy.move(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.move(Unknown Source)
at java.nio.file.Files.move(Unknown Source)
at org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:795)
at kafka.log.AbstractIndex.renameTo(AbstractIndex.scala:209)
at kafka.log.LogSegment.changeFileSuffixes(LogSegment.scala:497)
at kafka.log.Log.$anonfun$replaceSegments$4(Log.scala:2286)
at kafka.log.Log.$anonfun$replaceSegments$4$adapted(Log.scala:2286)
at scala.collection.immutable.List.foreach(List.scala:392)
at kafka.log.Log.replaceSegments(Log.scala:2286)
at kafka.log.Cleaner.cleanSegments(LogCleaner.scala:605)
at kafka.log.Cleaner.$anonfun$doClean$6(LogCleaner.scala:530)
at kafka.log.Cleaner.$anonfun$doClean$6$adapted(LogCleaner.scala:529)
at scala.collection.immutable.List.foreach(List.scala:392)
at kafka.log.Cleaner.doClean(LogCleaner.scala:529)
at kafka.log.Cleaner.clean(LogCleaner.scala:503)
at kafka.log.LogCleaner$CleanerThread.cleanLog(LogCleaner.scala:372)
at kafka.log.LogCleaner$CleanerThread.cleanFilthiestLog(LogCleaner.scala:345)
at kafka.log.LogCleaner$CleanerThread.tryCleanFilthiestLog(LogCleaner.scala:325)
at kafka.log.LogCleaner$CleanerThread.doWork(LogCleaner.scala:314)
at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:96)
Suppressed: java.nio.file.FileSystemException: C:\kafka\temp\kafka-logs\__consumer_offsets-9\00000000000000000000.timeindex.cleaned -> C:\kafka\temp\kafka-logs\__consumer_offsets-9\00000000000000000000.timeindex.swap: The process cannot access the file because it is being used by another process.
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileCopy.move(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.move(Unknown Source)
at java.nio.file.Files.move(Unknown Source)
at org.apache.kafka.common.utils.Utils.atomicMoveWithFallback(Utils.java:792)
... 17 more
仅供参考:我正在使用具有所有默认配置的 Kafka,并创建具有不同分区数的主题。
解决方案
您需要正确停止 Kafka 和 zookeeper。如果仍然存在,那么您需要删除 C:\kafka\temp\kafka-logs\ 然后启动服务器。
您将丢失数据,并且偏移量将从 0 开始。
推荐阅读
- preg-match-all - 如何使用 Preg_match_all 从多个数据中获取单个值
- php - PHP字符串不连接
- javascript - 我应该如何使用节点在猫鼬的“组”模型中将新用户添加到用户列表中?
- javascript - 在onclick函数中获取Class的变量
- html - 如何将 FileReader 结果加载到 HTML5 视频中以实现跨浏览器和设备的最佳兼容性
- python - 带有 if 语句的 lambda 函数的语法无效
- c# - 为列表中的每个项目设置权重
- haskell - Haskell - 你如何制作一个包含 getLine 的循环?
- python - 如何使用一个主键将不同的 CSV 文件合并为一个新的 CSV
- html - 在将发送表单的站点中嵌入另一个网页的适当方法是什么?