Finden Sie heraus, welches PHP-Skript auf jedem HTTPD-Prozess ausgeführt wird
7
Ich möchte wissen, wie HTTPD-Prozesse überprüft werden können, um festzustellen, welches PHP-Skript auf ihnen ausgeführt wird.
Ich habe bereits ein "netstat" erstellt und festgestellt, dass einige Prozesse DB- und Network-Sockets zu lange gespeichert haben, und jetzt möchte ich wissen, welche Skripte dies verursachen.
Das Apache-Modul muss mod_statusaktiviert sein (die Haupt-Apache-Konfigurationsdatei von CentO befindet sich unter /etc/httpd/conf/httpd.conf).
LoadModule status_module modules/mod_status.so
mit Option (dies muss in derselben Konfigurationsdatei wie oben eingestellt werden)ExtendedStatus on
# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
ExtendedStatus On
und einige dafür festgelegte Zugriffsrechte (unten XXX.XXX.XXX.XXXdurch Ihre IP ersetzen - diese befindet sich in derselben Konfigurationsdatei wie oben)
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost 127.0.0.1 XXX.XXX.XXX.XXX
</Location>
Jemand hat dies heute positiv bewertet, also bin ich zurückgekommen, um mir anzusehen, was ich geschrieben habe. Überprüfen der Frage und meiner Antwort ... Ja, ich habe die Frage beantwortet, aber die Lösung des Problems wäre besser, wenn Sie% D protokollieren und die Daten analysieren.
Symcbean
6
Der vorgeschlagene mod_status ist eine großartige Alternative, um zu sehen, welcher Prozess was gerade tut. Sie aktivieren ihn (und fügen normalerweise Allow-Anweisungen hinzu, damit Sie ihn aus dem IP-Bereich anzeigen können, von dem aus Sie auf den Webserver zugreifen) und navigieren dann zu http://site.name/server-statusund werden nett Ausgabe. Ein Beispiel finden Sie auf der Apaches-Website: http://www.apache.org/server-status
Ein weiteres nützliches Tool, um zu sehen, was mit einem Prozess los ist lsof, ist , wenn Sie eine bekannte PID haben, die "hängt", können lsof -p <pid>Sie eingeben, um zu sehen, was mit diesem Prozess los ist. Um allen Prozessen zu entsprechen, können Sie etwas wie lsof -c apacheoder eingeben lsof -c httpd. Es ist ein sehr vielseitiges Tool mit vielen Optionen für das, was Sie sehen möchten.
Schließlich können Sie stracean laufende Prozesse anhängen, um zu sehen, was sie gerade mit Systemaufrufen usw. tun strace -p <pid>. Achtung, dies KANN manchmal den laufenden Prozess zum Stillstand bringen. Halten Sie also ein Auge offen und starten Sie es bei Bedarf neu.
Zeigt lsof den Quelldateinamen an, wenn ein PHP-Cache verwendet wird?
Symcbean
Abhängig von der Implementierung und dem Öffnen / Halten von Dateien wäre strace detaillierter. Wenn Sie es mit -f (fork) aufrufen, folgt es auch untergeordneten Prozessen, die möglicherweise einen Webserver -> childprocess -> cache -> etc. aufrufen . Aber schwer genau zu sagen, ohne dass Sie damit spielen und es ausprobieren, um die Funktionen der Tools zu erlernen!
Mattias Ahnberg
Ich habe diesen Artikel bei der Suche unter Windows gefunden ... Natürlich lsofist er unter Windows nicht verfügbar. Falls also jemand auf die gleiche Weise hierher kommt
simonhamp
@symcbean Ich konnte es auf meinem Ubuntu-Server nicht sehen, aber die erste Datei war das aktuelle Verzeichnis, das mir zumindest sagte, dass es unsere Beta-Site war und somit sicher, einen betrügerischen Prozess zu beenden. Außerdem wurden die Verbindung zum Client (Browser) und die IP- / Socket-Details angezeigt.
Der vorgeschlagene mod_status ist eine großartige Alternative, um zu sehen, welcher Prozess was gerade tut. Sie aktivieren ihn (und fügen normalerweise Allow-Anweisungen hinzu, damit Sie ihn aus dem IP-Bereich anzeigen können, von dem aus Sie auf den Webserver zugreifen) und navigieren dann zu
http://site.name/server-status
und werden nett Ausgabe. Ein Beispiel finden Sie auf der Apaches-Website: http://www.apache.org/server-statusEin weiteres nützliches Tool, um zu sehen, was mit einem Prozess los ist
lsof
, ist , wenn Sie eine bekannte PID haben, die "hängt", könnenlsof -p <pid>
Sie eingeben, um zu sehen, was mit diesem Prozess los ist. Um allen Prozessen zu entsprechen, können Sie etwas wielsof -c apache
oder eingebenlsof -c httpd
. Es ist ein sehr vielseitiges Tool mit vielen Optionen für das, was Sie sehen möchten.Schließlich können Sie
strace
an laufende Prozesse anhängen, um zu sehen, was sie gerade mit Systemaufrufen usw. tunstrace -p <pid>
. Achtung, dies KANN manchmal den laufenden Prozess zum Stillstand bringen. Halten Sie also ein Auge offen und starten Sie es bei Bedarf neu.lsof (8) Manpage: http://linux.die.net/man/8/lsof
strace (1) Manpage: http://linux.die.net/man/1/strace
quelle
lsof
ist er unter Windows nicht verfügbar. Falls also jemand auf die gleiche Weise hierher kommt