Offensichtlich führt meine Apache-httpd-Instanz Reverse-DNS-Suchen (RDNS, geben Sie mir den Hostnamen für diese IP-Adresse) für die IP-Adresse jeder eingehenden Clientverbindung durch. Das ist schlecht. Zumal manchmal die Auflösung mit einem fehlenden PTR-Datensatz fehlschlägt - nach 28 Sekunden .
Diagnose: Ich %D
habe meinen "kombinierten" Protokollstil erweitert und die Antwortzeiten folgendermaßen betrachtet: Klar <1 für alle, die mit ihrem Hostnamen protokolliert werden, und 20+ für diejenigen, die ihre IP protokolliert bekommen.
Folgendes habe ich versucht:
- Schalten Sie die
server-status
Erweiterung aus. - Überprüfen Sie, ob dies
HostnameLookups Off
in der Konfiguration enthalten ist. - Stellen Sie sicher, dass
mod_access
in einerAllow
/Deny
-Regel kein Hostname angegeben ist . - Überprüfen Sie, ob Reverse-Proxy-Server denselben Regeln folgen.
Was habe ich vermisst?
force-reload
war genug.Antworten:
Es scheint, dass die Standardinstallation von Ubuntu 8.04 Apache httpd mit einer
LogFormat
beginnt, die mit beginnt%h
und die RDNS-Suche einer Client-IP durchführt. Warum Oh warum?? Durch Ersetzen durch%a
(Remote-IP-Adresse, siehe benutzerdefinierte Protokollformate ) wird dieses Problem um ca. 90%. Einige bleiben ...quelle
Haben Sie überprüft
HostnameLookups
, dass in keiner anderen Richtlinie festgelegt ist? Haben Sie das Modul mod_authz_host aktiviert?quelle
grep -ri
habe alles hinter mich gebracht .mod_authz_host
ist aktiv und in den Allow / Deny-Regeln werden keine Hostnamen verwendet. Jetzt nicht mal mitlocalhost
.Ich bin über dasselbe Problem gestolpert und habe eine andere Quelle für Reverse Lookups entdeckt: die Anwendungen selbst! PHP hat die
gethostbyaddr()
Funktion:http://php.net/manual/en/function.gethostbyaddr.php
quelle
Interessanterweise bin ich gerade auf einem meiner Server auf ein ähnliches Problem gestoßen. Das Problem begann ungefähr zu der Zeit, als ich ein Befehlszeilen-PHP-Skript ausführte, das die Protokolldateien nach den wichtigsten IP-Adressen durchsuchte. Dann ließ ich PHP für jede IP-Adresse eine umgekehrte DNS-Suche durchführen. Ungefähr zu dem Zeitpunkt, als ich dies tat, bemerkte ich, dass Apache plötzlich anfing, Hostnamen anstelle von IP-Adressen in die Protokolle zu kopieren. Der Wechsel von% h zu% a und der Neustart von Apache scheinen das Problem behoben zu haben. HostnameLookups ist auf Aus gesetzt. Ich vermute, dass Apache nur lokal zwischengespeicherte Ergebnisse verwendet, wenn zufällig eine umgekehrte Suche nach der IP im Cache durchgeführt wird. Könnte sein? Entweder das oder das ist ein Fehler im Server.
quelle