Erfahrungen mit Appserver.io

Erfahrungen mit Appserver.io

Stefan Galinski 13. Mai 2014 Expert Topics

0 Kommentare // Lesezeit: 5 min.

Vor kurzem haben wir uns im Rahmen der stetigen Weiterbildung mit dem Application-Server "appserver.io" der TechDivision GmbH beschäftigt. Unsere - noch zugegebenerweise recht oberflächlichen Erkenntnisse - möchten wir euch an dieser Stelle näher bringen.

Die Installation des Appservers fand auf einem Ubuntu 12.04 statt und hat sich als recht einfach erwiesen, da das Debian-Repository des Projektes genutzt werden konnte. Der Appserver ist aber auch für Mac und Windows verfügbar. Nachdem die Quellen eingetragen und der Appserver installiert worden ist, fanden sich alle Dateien des Servers direkt unter "/opt/appserver" wieder. Standardmäßig läuft der Appserver unter dem Port 9080 und wird nach der Installation bereits gestartet. Ein mitgeliefertes Admin-Interface wird später einmal die Bedienung und Übersicht erleichtern, ist aber aktuell noch sehr rudimentär. Es ist unter "http://127.0.0.1:9080/admin" erreichbar und ist geschützt mit den Zugangsdaten "appserver/appserver.i0".

Nach der Installation haben wir versucht unsere Website unter dem neuem System zum Laufen zu bringen und wir haben dies auch erfolgreich geschafft wie man unter der URL http://www.sgalinski.de:9080/ sehen kann. Bis auf das Abschicken des Kontaktformulars läuft die Seite sehr stabil. Das Problem ist durch eine fehlende PHP-Erweiterung bedingt, welche in der mitgelieferten Installation nicht enthalten ist. Natürlich fehlen noch Langzeiterfahrungen mit frequentierteren Seiten, um die allgemeine Stabilität beurteilen zu können. Jedoch gab es auch unter hoher Last beim Benchmarking keine Einbrüche bei der Verfügbarkeit der Seite, weshalb ein Produktiveinsatz wohl durchaus möglich wäre. Wir haben uns aber aktuell noch dagegen entschieden, werden aber die kommenden Versionen des Server im Auge behalten.

Aber wie konnten wir unsere Neos-Website unter dem Appserver zum Laufen bringen? Prinzipiell mussten wir hierzu lediglich die Website in den webapps-Ordner des Servers kopieren und das Verzeichnis "WEB-INF" im "Web"-Bereich von Neos anlegen. Es sind keine weiteren Dateien innerhalb des Verzeichnisses erforderlich. Weiterhin mussten wir einen vHost-Eintrag in der "etc/appserver.xml" anlegen. Hierfür haben wir einfach das bereits beiliegende vHost-Beispiel für Neos verwendet. Anschließend mussten wir noch den Neos-Cache löschen sowie die _Resources im Web-Bereich entfernen und die Website ist nach einem beherztem Neustart des Appservers mittels "service appserver restart" erreichbar gewesen.

<virtualHost name="www.sgalinski.de">
    <params>
        <param name="admin" type="string">stefan@sgalinski.de</param>
        <param name="documentRoot" type="string">webapps/sgalinskide/Web</param>
    </params>
    <rewrites>
        <rewrite condition="^/(_Resources/Packages/|robots\.txt|favicon\.ico){OR}-d{OR}-f{OR}-l" target="" flag="L" />
        <rewrite condition="^/(_Resources/Persistent/[a-z0-9]+/(.+/)?[a-f0-9]{40})/.+(\..+)" target="div" flag="L" />
        <rewrite condition="^/(_Resources/Persistent/.{40})/.+(\..+)" target="div" flag="L" />
        <rewrite condition="^/_Resources/.*" target="" flag="L" />
        <rewrite condition="(.*)" target="index.php" flag="L" />
    </rewrites>
    <environmentVariables>
        <environmentVariable condition="" definition="FLOW_REWRITEURLS=1" />
        <environmentVariable condition="" definition="FLOW_CONTEXT=Production" />
        <environmentVariable condition="Basic ([a-zA-Z0-9\+/=]+)@$Authorization" definition="REMOTE_AUTHORIZATION=div" />
    </environmentVariables>
    <locations>
        <location condition="~*\.php(\/|\?|$)">
            <fileHandlers>
                <fileHandler name="fastcgi" extension=".php" />
            </fileHandlers>
        </location>
    </locations>
</virtualHost>

Aus Sicht der Performance ist sich unsere Live-Installation mit der Appserver-Variante sehr ähnlich wobei sich dieser auch unter sehr hoher Last als äußerst stabil erwiesen hat. Der Apache riegelt bei uns hier leider schon wesentlich eher ab und friert unter Umständen sogar ein, weshalb wir von einem zu gewagten Benchmark beim Apache abgesehen haben. Für die durchgeführten Benchmarks haben wir das Tool "siege" mit den Parametern "-d2 -c20 -t 60s URL" verwendet. Neos lief in beiden Benchmarks im Production Context. Im Apache nutzen wir mod_php, was eine höhere Performance mit sich bringt als die FastCGI-Variante. Nachfolgende Resultate sind hierbei herausgekommen:

## Live-Seite - Production Context (mod_php)
Transactions:                    925 hits
Availability:                 100.00 %
Elapsed time:                  59.05 secs
Data transferred:               4.00 MB
Response time:                  0.29 secs
Transaction rate:              15.66 trans/sec
Throughput:                     0.07 MB/sec
Concurrency:                    4.55
Successful transactions:         925
Failed transactions:               0
Longest transaction:            0.74
Shortest transaction:           0.18
## Testseite Appserver.io - Production Context
Transactions:                    921 hits
Availability:                 100.00 %
Elapsed time:                  59.56 secs
Data transferred:              13.79 MB
Response time:                  0.28 secs
Transaction rate:              15.46 trans/sec
Throughput:                     0.23 MB/sec
Concurrency:                    4.27
Successful transactions:         921
Failed transactions:               0
Longest transaction:            0.77
Shortest transaction:           0.21

Die deutlich höhrere übertragene Datenmenge kam beim Appserver durch die fehlende deflate-Komprimierung zu Stande. Ein Modul ist hierzu zwar bereits aktiv, aber leider funktioniert die Komprimierung aufgrund eines PHP-Bugs noch nicht. Vermutlich wäre der Server ohne diesem Umstand leicht schneller als der Apache gewesen. 

Allgemein haben wir einen sehr guten Eindruck vom Appserver gewonnen und sind bereits sehr gespannt auf die kommenden Features. Speziell bei der Entwicklung neuer Applikationen kann die Verwendung des Appserver auch schon jetzt enorme Vorteile bringen, da neben dem Webserver noch viele weitere Features wie ein Persistence-Container und eine MessageQueue integriert sind. Unter der Ausnutzung dieser Möglichkeiten dürfte man erheblich performantere Applikationen auf Basis dieses Servers realisieren können. Befasst haben wir uns mit diesen Möglichkeiten aktuell jedoch noch nicht. Evtl. werden hierzu, zu einem späteren Zeitpunkt, weitere News-Einträge folgen.


0 Kommentare

Dateien hier ablegen
Dateien hochladen
Keine Kommentare.