2 Diese Datei ist in Plain Old Documentation geschrieben. Mit
6 ist sie deutlich leichter zu lesen.
8 =head1 FastCGI für Lx-Office
10 =head2 Was ist FastCGI?
12 Direkt aus L<http://de.wikipedia.org/wiki/FastCGI> kopiert:
14 FastCGI ist ein Standard für die Einbindung externer Software zur Generierung
15 dynamischer Webseiten in einem Webserver. FastCGI ist vergleichbar zum Common
16 Gateway Interface (CGI), wurde jedoch entwickelt, um dessen
17 Performance-Probleme zu umgehen.
22 Perl Programme (wie Lx-Office eines ist) werden nicht statisch kompiliert.
23 Stattdessen werden die Quelldateien bei jedem Start übersetzt, was bei kurzen
24 Laufzeiten einen Großteil der Laufzeit ausmacht. Während SQL Ledger einen
25 Großteil der Funktionalität in einzelne Module kapselt, um immer nur einen
26 kleinen Teil laden zu müssen, ist die Funktionalität von Lx-Office soweit
27 gewachsen, dass immer mehr Module auf den Rest des Programms zugreifen.
28 Zusätzlich benutzen wir umfangreiche Bibliotheken um Funktionaltät nicht selber
29 entwickeln zu müssen, die zusätzliche Ladezeit kosten. All dies führt dazu dass
30 ein Lx-Office Aufruf der Kernmasken mittlerweile deutlich länger dauert als
31 früher, und dass davon 90% für das Laden der Module verwendet wird.
33 Mit FastCGI werden nun die Module einmal geladen, und danach wird nur die
34 eigentliche Programmlogik ausgeführt.
36 =head2 Kombinationen aus Webservern und Plugin.
38 Folgende Kombinationen sind getestet:
40 * Apache 2.2.11 (Ubuntu) und mod_fastcgi.
42 Folgende Kombinationen funktionieren nicht:
44 * Apache 2.2.11 (Ubuntu) + mod_fcgid:
48 =head2 Konfiguration des Webservers.
52 AddHandler fastcgi-script .pl
56 AliasMatch ^/web/path/to/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl
58 <Directory /path/to/lx-office-erp>
60 AddHandler fastcgi-script .fpl
61 Options ExecCGI Includes FollowSymlinks
66 <DirectoryMatch //.*/users>
72 Variante 1 startet einfach jeden Lx-Office Request als fcgi Prozess. Für sehr
73 große Installationen ist das die schnellste Version, benötigt aber sehr viel
74 Arbeitspseicher (ca. 2GB).
76 Variante 2 startet nur einen zentralen Dispatcher und lenkt alle Scripte auf
77 diesen. Dadurch dass zur Laufzeit öfter mal Scripte neu geladen werden gibt es
78 hier kleine Performance Einbußen.
81 =head2 Mögliche Fallstricke
83 Die AddHandler Direktive vom Apache ist entgegen der Dokumentation
84 anscheinend nicht lokal auf das Verzeichnis beschränkt sondern global im
87 Wenn Änderungen in der Konfiguration von Lx-Office gemacht werden, oder wenn
88 Templates editiert werden muss der Server neu gestartet werden.
92 =head2 Performance und Statistiken
94 Die kritischen Pfade des Programms sind die Belegmasken, und unter diesen ganz
95 besonders die Verkaufsrechnungsmaske. Ein Aufruf der Rechnungsmaske in
96 Lx-Office 2.4.3 stable dauert auf einem Core2duo mit 2GB Arbeitsspeicher und
97 Ubuntu 9.10 eine halbe Sekunde. In der 2.6.0 sind es je nach Menge der
98 definierten Variablen 1-2s. Ab der Moose/Rose::DB Version sind es 5-6s.
100 Mit FastCGI ist die neuste Version auf 0,4 Sekunden selbst in den kritischen
101 Pfaden, unter 0,15 sonst.
103 =head2 Bekannte Probleme
105 Bei mehreren Benutzern scheint ab und zu eine Datenbankverbidung von Rose::DB
106 in den falschen Benutzer zu geraten. Das ist ein kritischer Bug und muss gefixt
109 Bei Administrativen Tätigkeiten werden in seltenen Fällen die Locales nicht
110 richtig geladen und die Maske erscheint in Englisch.