2014-11-21 147 views
1

我目前在使用Kafka和Storm时出现问题。 直到前几天我用了一台Windows电脑,但现在swticthed使用Mac。Storm和Kafka:增加打开文件描述符的数量

我的卡夫卡队列装满约。 4,800万条消息。

现在发生的是, 4600处理的消息我得到10240打开的文件描述符,我没有摆脱。

当我达到10240个打开的文件描述符,暴风试图打开一个动物园管理员文件和失败:

java.io.FileNotFoundException: /var/folders/2p/3xcy9hp10gd852_06v0dzg440000gn/T/c5a2bffa-ff9a-4093-9002-79cee98385dc/workers/5a809959-53b7-48f4-848e-ed585007d9ed/heartbeats/1416569332681 (Too many open files) 
    at java.io.FileOutputStream.open(Native Method) ~[na:1.8.0_25] 
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213) ~[na:1.8.0_25] 
    at org.apache.commons.io.FileUtils.openOutputStream(FileUtils.java:367) ~[commons-io-2.4.jar:2.4] 
    at org.apache.commons.io.FileUtils.writeByteArrayToFile(FileUtils.java:2094) ~[commons-io-2.4.jar:2.4] 
    at org.apache.commons.io.FileUtils.writeByteArrayToFile(FileUtils.java:2078) ~[commons-io-2.4.jar:2.4] 
    at backtype.storm.utils.LocalState.persist(LocalState.java:86) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating] 
    at backtype.storm.utils.LocalState.put(LocalState.java:66) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating] 
    at backtype.storm.daemon.worker$do_heartbeat.invoke(worker.clj:68) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating] 
    at backtype.storm.daemon.worker$fn__4527$exec_fn__1096__auto____4528$heartbeat_fn__4529.invoke(worker.clj:357) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating] 
    at backtype.storm.timer$schedule_recurring$this__1639.invoke(timer.clj:99) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating] 
    at backtype.storm.timer$mk_timer$fn__1622$fn__1623.invoke(timer.clj:50) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating] 
    at backtype.storm.timer$mk_timer$fn__1622.invoke(timer.clj:42) [storm-core-0.9.2-incubating.jar:0.9.2-incubating] 
    at clojure.lang.AFn.run(AFn.java:24) [clojure-1.5.1.jar:na] 
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_25] 

做一些google搜索后,我发现增加最大文件限制,我增加它们如下( launchctl):

launchctl limit 
    cpu   unlimited  unlimited  
    filesize unlimited  unlimited  
    data  unlimited  unlimited  
    stack  8388608  67104768  
    core  0    unlimited  
    rss   unlimited  unlimited  
    memlock  unlimited  unlimited  
    maxproc  1064   1064   
    maxfiles 1638400  2048000 




ulimit -a 
core file size   (blocks, -c) 0 
data seg size   (kbytes, -d) unlimited 
file size    (blocks, -f) unlimited 
max locked memory  (kbytes, -l) unlimited 
max memory size   (kbytes, -m) unlimited 
open files      (-n) 4096 
pipe size   (512 bytes, -p) 1 
stack size    (kbytes, -s) 8192 
cpu time    (seconds, -t) unlimited 
max user processes    (-u) 1064 
virtual memory   (kbytes, -v) unlimited 

仍然不好,它不断崩溃。正如我已经提到的,Kafka Spout似乎比我的拓扑可以承认的要多。

对此有何暗示?

谢谢! PS:我使用Storm 0.9.2-incubatin,核心和卡夫卡。

回答

0

经过整理后,我发现错误的Http-Client使用情况是导致此错误的原因。 我使用风暴的钩子功能,有时连接正在等待响应,但是当服务器不响时,它会空闲,因此每个http连接的套接字数量不断增加。

相关问题