romy: XSL + FOP + Java Geschwindigkeit optimieren

Hallöchen,

ich habe mal eine Frage zum integrierten FOP im Apachen.
Ich möchte mit Hilfe von FOP, einer XSL-Datei und einer XML-Datei ein PDF erzeugen. Bei "kleinen" Dateien (<20 MB) funktioniert dies wunderbar. Ich müsste aber auch Dateien mit bis zu 200 MB verarbeiten.
Gibt es Möglichkeiten den Apachen oder FOP zu optimieren, damit er diese großen Dateien auch verarbeiten kann. Bessere Hardware steht leider nicht zur Verfügung. Bei Dateien > ? MB (habe 130 probiert) bricht er mit einem memory fault ab.

Vielen Dank!

ciao
romy

  1. Hallo romy,

    ich habe mal eine Frage zum integrierten FOP im Apachen.
    Ich möchte mit Hilfe von FOP, einer XSL-Datei und einer XML-Datei ein PDF erzeugen. Bei "kleinen" Dateien (<20 MB) funktioniert dies wunderbar. Ich müsste aber auch Dateien mit bis zu 200 MB verarbeiten.
    Gibt es Möglichkeiten den Apachen oder FOP zu optimieren, damit er diese großen Dateien auch verarbeiten kann. Bessere Hardware steht leider nicht zur Verfügung. Bei Dateien > ? MB (habe 130 probiert) bricht er mit einem memory fault ab.

    Da FOP doch etwas speicherhungrig ist, wäre eine Option, die Heap-Größe anzupassen. Das geht z. B. mit folgendem Befehl:
    java -Xms256M -Xmx512M <Klassenname>

    In diesem Fall wird die initiale Heap-Größe auf 256 MB und die maximale auf 512 MB gesetzt. Entsprechende RAM- bzw. SWAP-Größe wird natürlich vorausgesetzt. ;-)

    java -X zeigt weitere Optionen.

    Grüße

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    1. Hi Marc,

      Da FOP doch etwas speicherhungrig ist, wäre eine Option, die Heap-Größe anzupassen. Das geht z. B. mit folgendem Befehl:
      java -Xms256M -Xmx512M <Klassenname>
      java -X zeigt weitere Optionen.

      Das klingt doch schon mal gut. Ich habe mir die X-Optionen mal angeschaut, aber keine gefunden, die mir die Defautlwerte mal anzeigt. Bevor ich irgendwelche neue Werte setze, wäre es sinnvoll glaube ich die alten zu kennen. Fällt dir dazu noch eine Idee ein?

      Viellciht muss ich mit den diversen Optionen auch einfach mal spielen.
      -Xprof könnte die benötigte Info liefern, mein Script lief mit dieser Option aber nicht mehr durch, sondern blieb hängen. Kann aber auch andere Ursachen haben. Muss ich im Laufe der Woche mal ein bisschen Zeit reinbringen.

      Vielen Dank!

      ciao
      romy

      1. Hallo romy,

        Da FOP doch etwas speicherhungrig ist, wäre eine Option, die Heap-Größe anzupassen. Das geht z. B. mit folgendem Befehl:
        java -Xms256M -Xmx512M <Klassenname>
        java -X zeigt weitere Optionen.
        Das klingt doch schon mal gut. Ich habe mir die X-Optionen mal angeschaut, aber keine gefunden, die mir die Defautlwerte mal anzeigt. Bevor ich irgendwelche neue Werte setze, wäre es sinnvoll glaube ich die alten zu kennen. Fällt dir dazu noch eine Idee ein?

        Ja, http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/java.html#standard.
        Google brachte mich übrigens auf die Idee (über den Umweg des ersten Ergebnisses).
        Danach sind unter Windows und unter Linux 2 MB für die minimale Heap Größe und 64 MB für die maximale Heap Größe angegeben.

        Eher empfehlenswert wäre also vermutlich der Aufruf:
        java -Xmx256M <Klassenname>

        Der Standardwert für die minimale Heap Größe ist mit 2 MB wahrscheinlich gut gewählt.

        Grüße

        Marc Reichelt || http://www.marcreichelt.de/

        --
        Linux is like a wigwam - no windows, no gates and an Apache inside!
        Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)