Kafka无法使用大量分区创建主题(64k)

时间:2017-10-26 23:31:55

标签: java apache-kafka kafka-consumer-api kafka-producer-api

我在Windows上运行Kafka 0.10.1.0。

我正在尝试使用kafka-topics.bat创建一个包含64k分区的大型主题。但它无法创建错误 -

[2017-10-26 15:35:01,232] WARN Session 0x25f59be4474000f for server <ZK server name>/<ZK Server IP>:<ZK server port>, unexpected error, closing socket connection and attempting reconnect (org.apache.z
ookeeper.ClientCnxn)

java.io.IOException: An established connection was aborted by the software in your host machine
        at sun.nio.ch.SocketDispatcher.write0(Native Method)
        at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51)
        at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
        at sun.nio.ch.IOUtil.write(IOUtil.java:65)
        at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:117)
        at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:366)
        at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1141)

还有其他人遇到过这个问题吗?此外,任何已知问题与大量分区的Kafka主题?或者我会更好地将它们分成多个主题?

谢谢, 维奈

2 个答案:

答案 0 :(得分:2)

要查看应用程序在给定时间打开的句柄总数(不仅仅是文件句柄):只是为了确保它是句柄限制。

https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx下载Process Explorer确保设置适当的刷新速度。打开它然后转到View - &gt;选择列 - &gt;按“处理性能”选项卡,然后单击“处理计数”。

对于Windows 7 x64位,进程可以同时打开16.711.680个句柄。如果您想查看自己的限制,请阅读以下内容。使用Windows Internals Book(https://technet.microsoft.com/en-us/sysinternals/bb963901.aspx)中的工具检查一下。工具的名称是TestLimit,您可以在Book Tools标题下的页面下部找到它。

据我所知,没有办法增加Windows操作系统的限制,我也看了。

正如其他人所说,想一个最小化大量线程的方法。也许您的应用程序关闭文件,但不关闭句柄。我的建议是,如果你真的需要使用非常大的句柄数,每次句柄数约为16米时都要启动一个新进程。

答案 1 :(得分:0)

创建64k分区,需要与文件处理程序一样多。我没有在Windows中运行Kafka。但是在linux中,你必须通过/etc/security/limits.conf

增加文件处理程序

这个article可能对选择正确数量的主题分区很有用。