当前位置: 首页 > 知识库问答 >
问题:

打开的文件太多Kafka长时间运行时出现异常

西门伟
2023-03-14

我有一个Kafka生产者代码在Java,使用java nio WatchService api观看新文件的目录,并采取任何新文件,并推到Kafka主题。火花流消费者阅读Kafka主题。我得到以下错误后,Kafka制作人的工作继续运行一天。制作人每2分钟推送大约500个文件。我的Kafka主题有1个分区和2个复制因子。有人能帮忙吗?

org.apache.kafka.common.KafkaException: Failed to construct kafka producer         
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:342) 
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:166) 
    at com.hp.hawkeye.HawkeyeKafkaProducer.Sender.createProducer(Sender.java:60) 
    at com.hp.hawkeye.HawkeyeKafkaProducer.Sender.<init>(Sender.java:38)   
    at com.hp.hawkeye.HawkeyeKafkaProducer.HawkeyeKafkaProducer.<init>(HawkeyeKafkaProducer.java:54) 
    at com.hp.hawkeye.HawkeyeKafkaProducer.myKafkaTestJob.main(myKafkaTestJob.java:81)

Caused by: org.apache.kafka.common.KafkaException: java.io.IOException: Too many open files
    at org.apache.kafka.common.network.Selector.<init>(Selector.java:125)
    at org.apache.kafka.common.network.Selector.<init>(Selector.java:147)  
    at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:306)

... 7 more 
Caused by: java.io.IOException: Too many open files         
     at sun.nio.ch.EPollArrayWrapper.epollCreate(Native Method)         
     at sun.nio.ch.EPollArrayWrapper.<init>(EPollArrayWrapper.java:130)        
     at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:69)      
     at sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:36) 
     at java.nio.channels.Selector.open(Selector.java:227)         
     at org.apache.kafka.common.network.Selector.<init>(Selector.java:123)     
 ... 9 more

共有1个答案

柳胜
2023-03-14

检查uLimited-aH

检查与您的管理员和增加打开的文件大小,例如:

open files                      (-n) 655536

我怀疑你的代码可能有漏洞,请参考:

http://mail-archives.apache.org/mod_mbox/spark-user/201504.mbox/

 类似资料:
  • 我有一个Hibernate,Spring,Debian,Tomcat,MySql堆栈在Linode服务器上与一些客户端一起生产。它是一个Spring多租户应用程序,为大约30个客户端托管网页。 应用程序开始罚款,然后过了一会儿,我得到这个错误: 但是,在抛出此错误之前,nagios会提醒我对服务器的ping停止响应。 以前,我有nginx作为代理,并得到这个nginx错误每个请求,但不得不重新启动

  • 我们正在AmazonLinux中的ApacheTomcat中运行一个web服务。最初web服务运行正常。在发出1000多个web请求后,我们收到了太多的打开文件异常。当我们重新启动tomcat服务器时,这个问题将再次得到解决。 请查看以下例外情况 附言:我们在网络服务中没有做任何与文件相关的操作。

  • 我下载了以下链接: http://www.java2s.com/Code/JarDownload/java/java-json.jar.zip 然后,我将jar添加到构建路径:右键单击项目 我能够使用java-json库而不会出现任何错误。然而,当我将项目导出到一个jar时,没有选项将java-json引用库作为jar的一部分。所以我假设通过将库添加到构建路径,我不必导出外部罐(无论如何也没有选项

  • 我有一个在tomcat上运行的应用程序,有时会出现以下错误: .... 我检查了打开文件的限制,它是1024个,但是当我检查了lsof应用程序的打开文件数量时,它接近200个,如果它没有达到限制,为什么会发生这种情况?我应该增加限额吗?是否有其他原因导致此错误?让服务重新正常运行的唯一方法是重新启动tomcat,还有其他恢复正常的方法吗? 提前谢谢。 编辑:这里是处理doPost方法的servle

  • 尝试在中显示文件时遇到问题。异常如下所示:。 代码如下: 异常消息为: 线程“main”com.JNIWrapper.libraryNotFoundException:在java.library.path中找不到JNIWrapper本机库(jniwrap.dll):c:\program files\java\jdk1.7.0_05\bin;c:\windows\sun\java\bin;c:\wi

  • 我已经在Ubuntu14.04中安装了Android studio。我试图清理这个项目,但它花了太长时间,已经1小时了,因为gradle正在运行。在我的Gradle控制台中,我得到了如下错误: 线程“png-cruncher_8”java.lang.runtimeException:在等待从aapt进程时超时,请确保在/home/files/android/sdk/build-tools/23.0