Hibiscus / Jameica auf einem Raspberry Pi3

 
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 21
Dabei seit: 01 / 2018
Betreff:

Hibiscus / Jameica auf einem Raspberry Pi3

 · 
Gepostet: 31.01.2018 - 15:22 Uhr  ·  #1
Hallo zusammen,

hat vielleicht jemand den Jameica Server auf einem Raspberry Pi zum Laufen bekommen? Ich versuche derzeit den Jameica Server (nightly) mit dem Jameica.Webadmin als einziges Plugin zu starten und laufe in eine OutOfMemory Exception. Wobei die Fehlermeldung eher auf ein Thread Problem als ein Memory Problem hindeutet.

Code

[Wed Jan 31 14:35:22 CET 2018][INFO][pool-1-thread-1][de.willuhn.jameica.messaging.NamedConcurrentQueue.deliver] error while processing message
java.rmi.RemoteException: unable to start handler; nested exception is: 
  MultiException[java.lang.OutOfMemoryError: unable to create new native thread, java.util.concurrent.RejectedExecutionException: org.eclipse.jetty.io.ManagedSelector@144adc5 id=0 keys=0 selected=0]
  at de.willuhn.jameica.webadmin.server.HttpServiceImpl.start(HttpServiceImpl.java:182)
  at de.willuhn.jameica.webadmin.server.HttpServiceImpl.addHandler(HttpServiceImpl.java:62)
  at de.willuhn.jameica.webadmin.messaging.DeployMessageConsumer.handleMessage(DeployMessageConsumer.java:96)
  at de.willuhn.jameica.messaging.NamedConcurrentQueue.deliver(NamedConcurrentQueue.java:246)
  at de.willuhn.jameica.messaging.NamedConcurrentQueue.access$000(NamedConcurrentQueue.java:26)
  at de.willuhn.jameica.messaging.NamedConcurrentQueue$1.run(NamedConcurrentQueue.java:81)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  at java.lang.Thread.run(Thread.java:745)
Caused by: MultiException[java.lang.OutOfMemoryError: unable to create new native thread, java.util.concurrent.RejectedExecutionException: org.eclipse.jetty.io.ManagedSelector@144adc5 id=0 keys=0 selected=0]
  at org.eclipse.jetty.server.Server.doStart(Server.java:386)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at de.willuhn.jameica.webadmin.server.HttpServiceImpl.start(HttpServiceImpl.java:176)
  ... 8 more
  Suppressed: java.util.concurrent.RejectedExecutionException: org.eclipse.jetty.io.ManagedSelector@144adc5 id=0 keys=0 selected=0
    at org.eclipse.jetty.util.thread.QueuedThreadPool.execute(QueuedThreadPool.java:383)
    at org.eclipse.jetty.io.SelectorManager.execute(SelectorManager.java:143)
    at org.eclipse.jetty.io.ManagedSelector.doStart(ManagedSelector.java:91)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
    at org.eclipse.jetty.io.SelectorManager.doStart(SelectorManager.java:273)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:105)
    at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:268)
    at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:81)
    at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:235)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
    at org.eclipse.jetty.server.Server.doStart(Server.java:401)
    ... 10 more
Caused by: java.lang.OutOfMemoryError: unable to create new native thread
  at java.lang.Thread.start0(Native Method)
  at java.lang.Thread.start(Thread.java:714)
  at org.eclipse.jetty.util.thread.QueuedThreadPool.startThreads(QueuedThreadPool.java:475)
  at org.eclipse.jetty.util.thread.QueuedThreadPool.doStart(QueuedThreadPool.java:115)
  at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:131)
  at org.eclipse.jetty.server.Server.start(Server.java:422)
  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:113)
  at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)
  at org.eclipse.jetty.server.Server.doStart(Server.java:389)
  ... 10 more
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 21
Dabei seit: 01 / 2018
Betreff:

Re: Hibiscus / Jameica auf einem Raspberry Pi3

 · 
Gepostet: 31.01.2018 - 15:28 Uhr  ·  #2
Update ulimit -a auf dem Raspberry zeigt:

max user processes (-u) 7346

Kann mir derzeit nicht vorstellen, dass jameica so viele Threads braucht..
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 21
Dabei seit: 01 / 2018
Betreff:

Re: Hibiscus / Jameica auf einem Raspberry Pi3

 · 
Gepostet: 31.01.2018 - 15:42 Uhr  ·  #3
Code

//A Very Simple Thread Example
class ThreadsExample {
  public static void main(String[] args){
    int i=0;
    while(true){
  i++;
      new Thread(new Runnable(){
          public void run() {
              try {
                  Thread.sleep(10000000);
              } catch(InterruptedException e) { 
      
    }        
        }
      }).start();
   System.out.println("Number: " + i);
    }
  }
}


Führt zu 5436 Threads die sich starten lassen..


Code

Ergebnis: 

Number: 5436
Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
  at java.lang.Thread.start0(Native Method)
  at java.lang.Thread.start(Thread.java:714)
  at ExampleProgram.main(threads.java:15)
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10128
Dabei seit: 03 / 2005
Betreff:

Re: Hibiscus / Jameica auf einem Raspberry Pi3

 · 
Gepostet: 01.02.2018 - 12:04 Uhr  ·  #4
Öffne mal das Shellscript "jameicaserver.sh" in einem Texteditor und entferne mal den Parameter "-Xss64m". Der war durch einige Scripting-Plugins nötig geworden - beim Zugriff per Webscraping via HTMLUnit kommt es beim Parsen der Webseiten mancher Banken aufgrund deren Komplexität des DOM-Trees zu derart tiefen Stacks, dass dies zu einem StackOverflowError führte. Der genannte VM-Parameter erhöht die Stackgrösse.

Und dabei fällt mir gerade auf, dass es von mir eigentlich Unsinn war, diesen Parameter auch im Shell-Script der Server-Version zu setzen, wo doch die Scripting-Plugins dort gar nicht zur Anwendung kommen. Ich werde den Parameter daher aus der jameicaserver.sh wieder entfernen.
Benutzer
Avatar
Geschlecht: keine Angabe
Beiträge: 21
Dabei seit: 01 / 2018
Betreff:

Re: Hibiscus / Jameica auf einem Raspberry Pi3

 · 
Gepostet: 01.02.2018 - 13:06 Uhr  ·  #5
YAHOOO! ^_^ Das wars wohl! Jameica startet startet nun auch auf dem Raspberry. Vielen, vielen Dank! Hab bei mir noch die Jetty Version auf 9.3.22.v20171030 hochgesetzt. Das hatte aber keine Auswirkung auf den Start..
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10128
Dabei seit: 03 / 2005
Betreff:

Re: Hibiscus / Jameica auf einem Raspberry Pi3

 · 
Gepostet: 01.02.2018 - 13:17 Uhr  ·  #6
Prima. Danke fuer die Rueckmeldung.
Gewählte Zitate für Mehrfachzitierung:   0