Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Netzwerk<br />
PHP-FPM<br />
listen.owner = www‐data<br />
listen.group = www‐data<br />
listen.mode = 0660<br />
Sie gibt den Besitzer (»listen.owner«),<br />
die Gruppe (»listen.group«) <strong>und</strong> die Zugriffsrechte<br />
(»listen.mode«) des Sockets<br />
vor. Anschließend startet dieser Befehl<br />
PHP-FPM neu:<br />
/etc/init.d/php5‐fpm restart<br />
01 <br />
Abbildung 6: Dieses Access-Log zeigt im oberen Bereich die Standard-Informationen <strong>und</strong> im unteren dann alle<br />
möglichen Daten über die Anfragen.<br />
Da<strong>mit</strong> Änderungen der PHP-Konfiguration<br />
wirksam werden, muss man den<br />
Apache-Server <strong>mit</strong> »mod_php« neustarten.<br />
Die gerade aktiven Benutzer erleben<br />
dann einen Verbindungsabbruch nebst einer<br />
Fehlermeldung. Anders bei PHP-FPM:<br />
Dort kann man die Konfiguration im laufenden<br />
Betrieb ändern. Das ist besonders<br />
nützlich, wenn man schnell die Anzahl<br />
der Interpreter-Prozesse in einem Pool<br />
hochschrauben oder weitere Pools hinzufügen<br />
möchte. PHP-FPM startet dann für<br />
neu eingehende Anfragen neue Prozesse<br />
<strong>mit</strong> der aktualisierten Konfiguration. Die<br />
noch laufenden alten Anfragen arbeiten<br />
die entsprechenden Prozesse noch ab, bevor<br />
PHP-FPM sie beendet. Einen solchen<br />
graceful Restart leitet<br />
/etc/init.d/php5‐fpm reload<br />
ein. Das bereits erwähnte:<br />
/etc/init.d/php5‐fpm restart<br />
löst hingegen einen herkömmlichen Neustart<br />
aus.<br />
Protokollant<br />
Die von einem Pool bearbeiteten Anfragen<br />
kann PHP-FPM zu Diagnosezwecken<br />
aufzeichnen. Dazu ergänzt man in der<br />
entsprechenden Konfigurationsdatei des<br />
Pools (wie der aus Listing 1) die Zeile:<br />
access.log = /var/log/$pool.access.log<br />
Nach dem Gleichheitszeichen folgt der<br />
Name der Log-Datei. Den Platzhalter<br />
»$pool« ersetzt PHP-FPM gegen den Namen<br />
des Pools. Standardmäßig landen im<br />
Protokoll die IP-Adresse, der Benutzername,<br />
die (Server-)Zeit, die Request-Methode,<br />
die angefragte Adresse (URI) <strong>und</strong><br />
der zurückgelieferte Status-Code. PHP-<br />
FPM kann zusätzlich aber auch die viel<br />
interessantere Ausführungszeit, die benötigte<br />
Prozessor-Belastung <strong>und</strong> den Query-<br />
String protokollieren. Man sollte deshalb<br />
gleich <strong>mit</strong> der zusätzlichen Zeile:<br />
access.format = "%R ‐ %u %t \"%m %r%Q%q\"U<br />
%s %f %{mili}d %{kilo}M %C%%"<br />
alle wichtigen Informationen zusammenstellen<br />
lassen (Abbildung 6). Wie ihr<br />
kryptischer Aufbau schon andeutet, kann<br />
man sich den Aufbau des Protokolls wie<br />
in Apache selbst zusammensetzen, die<br />
Buchstaben sind dabei Platzhalter für<br />
verschiedene Informationen. Welcher<br />
Platzhalter für welche Information steht,<br />
verraten die Kommentare in der <strong>mit</strong>gelieferten<br />
Beispiel-Datei.<br />
Optimierer<br />
Während das vorgestellte Access-Log<br />
sämtliche Anfragen aufzeichnet, landen<br />
im Slow-Log alle Anfragen, für die der<br />
PHP-Interperter zu lange benötigt hat.<br />
PHP-FPM führt ein solches Slow-Log für<br />
einen Pool, wenn man in der zugehörigen<br />
Konfigurationsdatei folgende Zeile<br />
ergänzt:<br />
slowlog = /var/log/$pool.log.slow<br />
»$pool« steht wieder für den Pool-Namen.<br />
Die folgende Zeile:<br />
request_slowlog_timeout = 30s<br />
legt dann noch fest, wann eine Anfrage<br />
zu lange in der Bearbeitung ist. In diesem<br />
Fall würde PHP-FPM eine Anfrage genau<br />
F Abbildung 7: Wie<br />
dieses Slow-Log<br />
auf deckt, verhindert<br />
eine »sleep()«-Anweisung<br />
in »info.php« die<br />
zügige Verarbeitung der<br />
Anfrage.<br />
32 Ausgabe 06-2012 Admin www.admin-magazin.de