2016-07-14 9 views
1

Ich erhalte den Fehler unten (worker.log), wenn eine Topologie Absenden 1.0.1 Storm (trotz der Fehler, die Topologie nicht vorgelegt bekommen und erscheint in der Sturm UI):Sturm 1.0.1 Worker Fehler auf Topologie Absenden

o.a.s.d.worker [ERROR] Error on initialization of server mk-worker java.lang.OutOfMemoryError: unable to create new native thread 
    at java.lang.Thread.start0(Native Method) ~[?:1.8.0_91] 
    at java.lang.Thread.start(Thread.java:714) ~[?:1.8.0_91] 
    at org.apache.storm.timer$mk_timer.doInvoke(timer.clj:77) ~[storm-core-1.0.1.jar:1.0.1] 
    at clojure.lang.RestFn.invoke(RestFn.java:457) ~[clojure-1.7.0.jar:?] 
    at org.apache.storm.daemon.worker$mk_halting_timer.invoke(worker.clj:244) ~[storm-core-1.0.1.jar:1.0.1] 
    at org.apache.storm.daemon.worker$worker_data$fn__8190.invoke(worker.clj:293) ~[storm-core-1.0.1.jar:1.0.1] 
    at org.apache.storm.util$assoc_apply_self.invoke(util.clj:930) ~[storm-core-1.0.1.jar:1.0.1] 
    at org.apache.storm.daemon.worker$worker_data.invoke(worker.clj:268) ~[storm-core-1.0.1.jar:1.0.1] 
    at org.apache.storm.daemon.worker$fn__8450$exec_fn__2461__auto__$reify__8452.run(worker.clj:611) ~[storm-core-1.0.1.jar:1.0.1] 
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_91] 
    at javax.security.auth.Subject.doAs(Subject.java:422) ~[?:1.8.0_91] 
    at org.apache.storm.daemon.worker$fn__8450$exec_fn__2461__auto____8451.invoke(worker.clj:609) ~[storm-core-1.0.1.jar:1.0.1] 
    at clojure.lang.AFn.applyToHelper(AFn.java:178) ~[clojure-1.7.0.jar:?] 
    at clojure.lang.AFn.applyTo(AFn.java:144) ~[clojure-1.7.0.jar:?] 
    at clojure.core$apply.invoke(core.clj:630) ~[clojure-1.7.0.jar:?] 
    at org.apache.storm.daemon.worker$fn__8450$mk_worker__8545.doInvoke(worker.clj:583) [storm-core-1.0.1.jar:1.0.1] 
    at clojure.lang.RestFn.invoke(RestFn.java:512) [clojure-1.7.0.jar:?] 
    at org.apache.storm.daemon.worker$_main.invoke(worker.clj:771) [storm-core-1.0.1.jar:1.0.1] 
    at clojure.lang.AFn.applyToHelper(AFn.java:165) [clojure-1.7.0.jar:?] 
    at clojure.lang.AFn.applyTo(AFn.java:144) [clojure-1.7.0.jar:?] 
    at org.apache.storm.daemon.worker.main(Unknown Source) [storm-core-1.0.1.jar:1.0.1] 
2016-07-14 11:48:29.568 o.a.s.util [ERROR] Halting process: ("Error on initialization") 
java.lang.RuntimeException: ("Error on initialization") 
    at org.apache.storm.util$exit_process_BANG_.doInvoke(util.clj:341) [storm-core-1.0.1.jar:1.0.1] 
    at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.7.0.jar:?] 
    at org.apache.storm.daemon.worker$fn__8450$mk_worker__8545.doInvoke(worker.clj:583) [storm-core-1.0.1.jar:1.0.1] 
    at clojure.lang.RestFn.invoke(RestFn.java:512) [clojure-1.7.0.jar:?] 
    at org.apache.storm.daemon.worker$_main.invoke(worker.clj:771) [storm-core-1.0.1.jar:1.0.1] 
    at clojure.lang.AFn.applyToHelper(AFn.java:165) [clojure-1.7.0.jar:?] 
    at clojure.lang.AFn.applyTo(AFn.java:144) [clojure-1.7.0.jar:?] 
    at org.apache.storm.daemon.worker.main(Unknown Source) [storm-core-1.0.1.jar:1.0.1] 

gefunden auch diesen Eintrag in dem supervisor.log:

o.a.s.util [WARN] Worker Process ea92e1b7-c870-4b4c-b0a6-00272f27f521:# There is insufficient memory for the Java Runtime Environment to continue. 

jedoch "freien -m" Befehl schlägt genügend freien Speicherplatz.

Weitere Meldungen scheinen darauf hinzuweisen, dass der Worker nicht gestartet werden kann und supervisor.log dann mehrfach mit der Protokollierung der INFO-Meldung "{ID des Workerprozesses} hat noch nicht begonnen" beginnt.

+0

Was sind Arbeiterparameter, die Sie in storm.yaml erwähnt haben? –

+0

@Jaya Supervisor.childopts: "-Xmx2048m" worker.heap.memory.mb: 2048 worker.childopts: "-Xmx2048m" –

Antwort

0

Von Ihrer Frage, es scheint, Sie laufen Sturm unter linux platform, also in Linux, das OS gibt upto N number of threads to a single process aus Sicherheitsgründen. Wenn Ihr Java-Programm mehr als N-Thread umfasst, erhalten Sie eine solche Ausnahme. Dafür benötigen Sie den N-Wert zu erhöhen, die in der folgenden Datei

/proc/sys/kernel/threads-max 

Zum Abrufen von aktuellen N-Wert konfiguriert ist:

cat /proc/sys/kernel/threads-max 

zu aktualisieren N-Wert zu ein neuer Wert:

echo 123456789 > /proc/sys/kernel/threads-max 

Ich hoffe, es hilft.

+0

Danke für die Antwort. Es dachte, es wäre eher ein Worker-Speicher-Zuweisungsproblem als die Unfähigkeit, mehr Threads zu erzeugen. Außerdem funktionierte der Cluster zuvor einwandfrei, nicht sicher, was dieses Problem verursacht hat. Ich habe versucht, den '/ proc/sys/kernel/threads-max' Wert sogar mit sudo zu verdoppeln, aber behalte immer ** Erlaubnis verweigert ** Fehler. –

+0

** Update **: Ich habe eine andere Ubuntu-Maschine mit nur 2 GB Speicher eingerichtet und die Sturm-Topologie funktioniert ohne Probleme. Der Computer, auf dem ich den Fehler erhalte, ist eine VM mit 8 GB Speicher. Nicht sicher, was das Problem hier ist. –

+0

Was ist der Thread-Max-Wert in beiden Maschinen? –

Verwandte Themen