Umleitung von Port 80 zu Port 8080: Apache mit Proxypass zu langsam, während der direkte Zugriff auf xyz.com:8080 sehr schnell ist

Umleitung von Port 80 zu Port 8080: Apache mit Proxypass zu langsam, während der direkte Zugriff auf xyz.com:8080 sehr schnell ist

Wir stehen vor einem seltsamen Problem … Unser Server ist stark ausgelastet und die Antwortzeit beträgt etwa 1 Minute pro Anfrage (sehr langsam) … der vor Tomcat läuft … wenn wir mit xyz.com:8080 auf die Site zugreifen, ist das superschnell (1 Anfrage/Sek.) … und wir verwenden Mod_Proxy, das die Anfrage an Tomcat umleitet … Meine Frage ist, ob wir die Anfrage direkt an Tomcat senden können, anstatt sie von Apache an Tomcat weiterzuleiten, oder ob wir eine Konfiguration in Apache vornehmen müssen …

So sieht die Datei Httpd.conf aus …

ProxyPreserveHost On 
ProxyPass / http://localhost:8080/ retry=1 acquire=300 timeout=60 Keepalive=On 
ProxyPassReverse / http://localhost:8080/ ErrorLog /Path/To/Logs/Apache.log LogLevel warn

Antwort1

Ich nehme an, Ihr Apache läuft schnell, ist aber nur langsam für die Tomcat-Anfragen? Die Frage ist nicht ganz klar, und wenn Ihr Apache selbst langsam ist, müssen Sie sich das ansehen. Nur ein Prozess kann auf Port 80 lauschen. Wenn Sie den Port also nicht angeben möchten, müssen Sie Apache verwenden. Oder verzichten Sie ganz auf Apache und lassen Sie Tomcat stattdessen auf Port 80 lauschen. Apache sollte jedoch schnell genug sein, um dies als Proxy zu verwenden.

Ich kann ein paar Dinge vorschlagen, wenn Apache selbst schnell ist, aber für die geproxiedeten Tomcat-Anfragen nur langsam ist:

Es könnte sich um eine langsame DNS-Suche handeln, aber das kommt auf localhost selten vor. Ich nehme an, localhost befindet sich in der Hosts-Datei? Könnten Sie dies in 127.0.0.1 ändern, damit Sie keine DNS-Suche benötigen?

Benötigen Sie alle diese Optionen?

  • ProxyPreserveHost – muss Tomcat den Hostnamen kennen? Wenn nicht, muss er gespeichert werden?
  • retry/aquire/timeout/keepalive – diese sind eher für den Fall gedacht, dass der Proxy keine zuverlässige Verbindung hat oder sich hinter einer Firewall befindet. Sie sollten nicht benötigt werden, wenn Apache und Tomcat auf demselben Server laufen.
  • Benutzerdefinierte Protokolldateien für Proxy-Anfragen können nützlich sein, ich verwende sie jedoch selbst nicht.

Ich kann nicht erkennen, warum sie Probleme verursachen, habe sie aber nicht verwendet. Mein erster Vorschlag wäre also, sie herauszureißen und zu sehen, ob sich die Dinge dadurch verbessern. Wenn Sie sie dann benötigen, fügen Sie sie einzeln wieder hinzu, um zu sehen, wo das Problem lag.

Ich würde es also vereinfachen und durch Folgendes ersetzen:

ProxyPass / http://127.0.0.1:8080/ 
ProxyPassReverse / http://127.0.0:8080/

Und dann versuchen Sie es erneut.

Ich nehme außerdem an, dass du mod_proxy lädst? Manchmal können die einfachsten Dinge ausgelassen werden ;-)

verwandte Informationen