简体   繁体   English

使用Kafka的应用程序打开文件过多错误

[英]Too many files open error on app using Kafka

I'm building an app using Kafka and Spark Streaming. 我正在使用Kafka和Spark Streaming构建一个应用程序。 Input data comes from a third part streaming and it's published on a kafka topic. 输入数据来自第三方流,并在kafka主题上发布。 This code shows the Stream Proxy module: it's the way I get the results from the streaming and how I send them to KafkaPublisher (it's shown just a sketch): 这段代码显示了Stream Proxy模块:这是我从流中获取结果的方式以及将它们发送到KafkaPublisher的方式(仅显示了草图):

def on_result_response(self,*args):
    self.kafkaPublisher.pushMessage(str(args[0]))

The KafkaPublisher is realized with these two methods: KafkaPublisher通过以下两种方法实现:

class KafkaPublisher:

def __init__(self,address,port,topic):
    self.kafka = KafkaClient(str(address)+":"+str(port))
    self.producer = SimpleProducer(self.kafka)
    self.topic=topic



def pushMessage(self,message):
    self.producer.send_messages(self.topic, message)
    self.producer = SimpleProducer(self.kafka, async=True)

And the app is launched by this main: 该应用程序是通过以下主程序启动的:

from StreamProxy import StreamProxy


streamProxy=StreamProxy("localhost",9092,"task1")
streamProxy.getStreaming(20)  #seconds of streaming

After some batch processing (10 seconds more or less) it's launched the following exceptions : 经过一些批处理(大约10秒或更长时间)后,它启动了以下异常

Exception in thread Thread-2354: Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner File "/usr/lib/python2.7/threading.py", line 754, in run File "/usr/local/lib/python2.7/dist-packages/kafka/producer/base.py", line 164, in _send_upstream File "/usr/local/lib/python2.7/dist-packages/kafka/client.py", line 649, in send_produce_request File "/usr/local/lib/python2.7/dist-packages/kafka/client.py", line 253, in _send_broker_aware_request File "/usr/local/lib/python2.7/dist-packages/kafka/client.py", line 74, in _get_conn File "/usr/local/lib/python2.7/dist-packages/kafka/conn.py", line 236, in connect error: [Errno 24] Too many open files 线程Thread-2354中的异常:追溯(最近一次调用):__bootstrap_inner中的文件“ /usr/lib/python2.7/threading.py”,第801行,文件“ /usr/lib/python2.7/threading.py” ,在运行文件“ /usr/local/lib/python2.7/dist-packages/kafka/producer/base.py”中的第754行,在_send_upstream文件“ /usr/local/lib/python2.7”中的第164行send_produce_request文件“ /usr/local/lib/python2.7/dist-packages/kafka/client.py”中的_send_broker_aware_request文件“ / usr”中的第253行,“ / dist-packages / kafka / client.py”,第649行/local/lib/python2.7/dist-packages/kafka/client.py“,第74行,在_get_conn文件“ /usr/local/lib/python2.7/dist-packages/kafka/conn.py”中, 236,连接错误:[Errno 24]打开的文件太多

Exception in thread Thread-2355: Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner File "/usr/lib/python2.7/threading.py", line 754, in run File "/usr/local/lib/python2.7/dist-packages/kafka/producer/base.py", line 164, in _send_upstream File "/usr/local/lib/python2.7/dist-packages/kafka/client.py", line 649, in send_produce_request File "/usr/local/lib/python2.7/dist-packages/kafka/client.py", line 253, in _send_broker_aware_request File "/usr/local/lib/python2.7/dist-packages/kafka/client.py", line 74, in _get_conn File "/usr/local/lib/python2.7/dist-packages/kafka/conn.py", line 236, in connect error: [Errno 24] Too many open files 线程Thread-2355中的异常:追溯(最近一次调用):__bootstrap_inner中的文件“ /usr/lib/python2.7/threading.py”,第801行,文件“ /usr/lib/python2.7/threading.py” ,在运行文件“ /usr/local/lib/python2.7/dist-packages/kafka/producer/base.py”中的第754行,在_send_upstream文件“ /usr/local/lib/python2.7”中的第164行send_produce_request文件“ /usr/local/lib/python2.7/dist-packages/kafka/client.py”中的_send_broker_aware_request文件“ / usr”中的第253行,“ / dist-packages / kafka / client.py”,第649行/local/lib/python2.7/dist-packages/kafka/client.py“,第74行,在_get_conn文件“ /usr/local/lib/python2.7/dist-packages/kafka/conn.py”中, 236,连接错误:[Errno 24]打开的文件太多

Please note that there are many different exceptions with the same message and surely the problem is publisher-side. 请注意,同一条消息有许多不同的例外情况,当然问题出在发行方。

尝试删除该行:

self.producer = SimpleProducer(self.kafka, async=True)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM