FastCGI und APC nutzen

Nach den „Hintergrundinformationen zu mod_php, CGI PHP und FastCGI“ und der „Einführung von FastCGI für ManagedServer“ vor etwa einem halben Jahr möchten wir nun etwas tiefer in das Thema einsteigen und Ihnen einige Tipps zur Aktivierung und Nutzung von FastCGI und APC geben.

Was ist FastCGI?

FastCGI ist ein Protokoll, welches für die Verbindung zwischen Software, die zur Generierung dynamischer Webseiten notwendig ist, und dem entsprechenden Webserver zuständig ist. FastCGI ist sozusagen als eine Weiterentwicklung des CGI-Protokolls zu sehen und ermöglicht im Gegensatz zu diesem das Ausführen mehrerer Anfragen innerhalb eines Prozesses. In der Praxis kann FastCGI bei dynamischen Web-Anwendungen mit PHP oder Perl abhängig von der jeweiligen Anwendung eine ganz erhebliche Performance-Steigerung ermöglichen und somit Inhalte in vielen Fällen noch einmal deutlich schneller bereitstellen.

Bei uns ist PHP-FPM (FPM = FastCGI Process Manager) im Einsatz, die erst seit PHP 5.3.3 offiziell in PHP zur Verfügung steht. FastCGI kann in allen dedizierten Servern (z.B. ManagedServer, ResellerDedicated) genutzt werden und ist in allen Versionen ab PHP 5.3.8 verfügbar.

FastCGI aktivieren

Für die Aktivierung und Nutzung von FastCGI wählen Sie bitte im Kundenmenü zunächst den Menüpunkt „PHP-Version“ und dort die Domain aus, für welche FastCGI genutzt werden soll. Im Auswahlmenü stehen dann über den Reiter „PHP 5.3“ die Editionen „5-53STABLE“ und „5-53LATEST“ zur Verfügung. Nach Auswahl einer dieser Editionen können Sie anschließend rechts die Version „FASTCGI“ wählen.

Wir empfehlen beim Einsatz von FastCGI die „LATEST“ und somit die neueste bei uns erhältliche Version von PHP zu nutzen, die sehr viele Fehlerbehebungen des PHP FastCGI Process Managers seit der letzten Vorgängerversionen enthält.

FastCGI und APC

Mit der Aktivierung von FastCGI steht auch der APC (Alternative PHP Cache) als Modul zur Verfügung. Dieser Cache ermöglicht eine beschleunigte Ausführung von PHP-Programmen die dadurch erreicht wird, dass der kompilierte PHP-Quelltext zwischengespeichert (gecached) wird und bei wiederholter Ausführung das erneute Kompilieren fast vollständig vermieden werden kann. (Stichwort: Bytecode Cache)

Bei APC gibt es zwei verschiedene Caches:

  • Den Datei-Cache: Dieser gilt global für die gesamte Domain
  • Der User-Cache: Dieser gilt für jede Instanz, die geladen wird. Da wir pro Domain mehrere FastCGI-Instanzen starten, variiert der Cache bei einer Abfrage des Inhalts und es kann leider keiner der User-Caches explizit angesprochen werden.

Möchten Sie Werte per PHP.INI verändern, wie beispielsweise die maximale Speichergröße (apc.shm_size) so ist dies leider nicht über die Nutzung einer eigenen PHP.INI möglich. Bitte teilen Sie uns den gewünschten neue Wert mit, den wir dann in eine globale PHP.INI eintragen. Bei der Nutzung von FastCGI wird ein Hauptprozesses gestartet, der diese Daten bereits enthalten muss, um Sie später auch in Childs nutzen zu können.

Aktuelle APC Werte auslesen, Interface aufrufen

Hinterlegen Sie eine info.php und rufen Sie diese Seite auf, so ist dort ein Abschnitt über APC enthalten.

Zum Aufruf des Interfaces mit Cache hit rates etc. des APC-Caches laden Sie sich bitte das PECL-Paket unter http://pecl.php.net/package/APC herunter und entpacken es. Darin finden Sie eine „apc.php“ die Sie dann bitte einfach in den Document Root Ihrer Webseite kopieren und per Browser aufrufen.

Zusätzliche Hinweise

  • Nicht alle OpenSource-Applikationen, die unsere Kunden einsetzen sind mit der eingangs erwähnten FastCGI-Implementation „PHP-FPM“ kompatibel. Es kann zu Fehlern kommen, da diese in Ihren Quelltexten bei der Unterstützung der verschiedensten Interface-Typen von PHP das ‚fpm-fcgi‘ nicht eingetragen haben. Bitte erweitern Sie die Liste entsprechend oder wenden sich an die Community des System. Eine solche Zeile kann beispielsweise wie folgt aussehen:(PHP_SAPI == ‚fpm-fcgi‘ || PHP_SAPI == ‚cgi‘ || PHP_SAPI == ‚isapi‘ || PHP_SAPI == ‚cgi-fcgi‘)
  • Wenn Sie lokal mittels LAMP/XAMPP bzw. WAMP oder MAMP oder einem eigenen Server arbeiten und programmieren, so sollten Sie darauf achten, dass Sie kein mod_fcgid, sondern mod_fastcgi für den Apache einsetzen und ansprechen, damit Ihre Ergebnisse anschließend auch bei uns korrekt auf dem Webserver funktionieren.
  • Für noch mehr Performance, kann der APC-Cache mit dem Memcached „Cache-Server“ gekoppelt werden bzw. eine Installation des Memcached (http://memcached.org/) vorgeschaltet werden.

End of article

Dietmar

Über den Autor

Dietmar

Dietmar ist seit 2005 bei domainFACTORY in wechselnden Aufgabenbereichen tätig. Seit 2013 unterstützt er als "Spezialist Qualitätssicherung Web" die Kollegen in der Entwicklungsabteilung bei allen Themen rund um Quality Assurance / Testing. Dabei kommt ihm die jahrelange Erfahrung im direkten und indirekten Kundensupport und der Begleitung bei der Einführung unseres ResellerProfessional-Systems zu Gute. Auch für viele Kollegen ist er bei Fragen dazu oder sehr alten Tarif-Konstellationen noch immer gerne eine Anlaufstelle.

8 Kommentare

Die von Ihnen hier erhobenen Daten werden von der domainfactory GmbH zur Veröffentlichung Ihres Beitrags in diesem Blog verarbeitet. Weitere Informationen entnehmen Sie bitte folgendem Link: www.df.eu/datenschutz


  • Sebastian Heide
    Sebastian Heide - 29. Oktober 2012 um 10:59 Uhr

    Hallöchen,

    es wäre ja mal echt toll, wenn Ihr das auch mal für die Webhosting-Pakete machen würdet. Viele andere Anbieter bieten das an und es ist doch nur zum Vorteil Eurer Kunden. Zwar sind Eure Server auch bei den Webhosting-Paketen schnell, aber da kann man doch noch viel mehr rausholen, gerade bei Seiten, die richtige Cache Tools bräuchten.

    Wird doch sicher nicht nur von mir gefordert. Ich fände es toll, wenn Ihr da in nächster Zeit mal etwas realisieren würdet.

    Gruß Sebastian

  • Dietmar Leher
    Dietmar Leher - 29. Oktober 2012 um 11:20 Uhr

    Hallo Sebastian,
    wir möchten generell auch für unsere SharedHosting-Angebote in Zukunft FastCGI anbieten, dies wurde an anderen Stellen im Blog und Forum auch schon erwähnt. Kurzfristig war das bislang aufgrund anderer Projekte und der noch zu nehmenden Hürden bei der eingesetzten FastCGI-Implementation – damit es auch wirklich eine spürbare verbesserte Leistung gibt noch nicht möglich und wird daher auch noch etwas dauern.

  • Sebastian Heide
    Sebastian Heide - 29. Oktober 2012 um 12:45 Uhr

    Hallo,

    es freut mich, dass Ihr vorhabt, dies auch für SharedHosting anzubieten. Denn für den Kunden liegen die Vorteile ja klar auf der Hand und für mich wäre das ganz klar ein Kriterium, auch weiterhin auf DF zu setzen 🙂

    Gruß Sebastian

  • Bertram Simon
    Bertram Simon - 29. Oktober 2012 um 13:37 Uhr

    Danke für eure Arbeit.

  • Dirk
    Dirk - 29. Oktober 2012 um 13:46 Uhr

    Hallo!

    Das mit APC ist ja cool, allerdings kann ich es im RP nicht finden. Können Sie bitte noch kurz und knapp beschreiben, wie genau man den Cache aktivieren kann?

    Besten Dank und viele Grüße,
    Dirk

  • rppro
    rppro - 29. Oktober 2012 um 16:55 Uhr

    Das Rp hat mit APC auch soviel zu tun, wie die Hirschjagd mit den Winterreifen. 😉

  • Dietmar Leher
    Dietmar Leher - 29. Oktober 2012 um 16:56 Uhr

    Hallo Dirk,
    der APC ist automatisch aktiv, sobald Sie die passende PHP-Version mit FastCGI im RP2 aktiviert haben.

  • Michael Wegener
    Michael Wegener - 2. November 2012 um 21:32 Uhr

    Zusammen mit SSD Storage für DB und Inhalte ist damit aus unseren Managed-Servern ein „Wunschlos-Glücklich“ Paket geworden.