Перенаправление порта 80 на порт 8080: Apache с Proxypass слишком медленный, тогда как прямой доступ к xyz.com:8080 очень быстрый

Перенаправление порта 80 на порт 8080: Apache с Proxypass слишком медленный, тогда как прямой доступ к xyz.com:8080 очень быстрый

Мы столкнулись со странной проблемой... У нас загруженный сервер... и время ответа составляет около 1 минуты на запрос (очень медленно)... который работает перед Tomcat... если мы заходим на сайт с xyz.com:8080, то он очень быстрый (1 запрос/сек)... и мы используем Mod_Proxy, который перенаправляет запрос на tomcat... Мой вопрос: вместо того, чтобы передавать запрос с Apache на tomcat, можем ли мы напрямую отправлять запрос на tomcat... или нам нужна какая-то конфигурация в Apache...

Вот как выглядит файл Httpd.conf.

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

решение1

Я предполагаю, что ваш Apache работает быстро, но медленно только для запросов Tomcat? Вопрос не совсем ясен, и если ваш Apache сам по себе медленный, то вам нужно это проверить. Только один процесс может прослушивать порт 80, поэтому, если вы не хотите указывать порт, вам придется работать через Apache. Или полностью отказаться от Apache и заставить tomcat прослушивать порт 80. Однако Apache должен быть достаточно быстрым, чтобы проксировать это.

Несколько вещей, которые я могу предложить, если сам Apache быстрый, но медленный для проксированных запросов Tomcat:

Это может быть медленный поиск DNS, но это редкость на localhost. Я предполагаю, что localhost есть в файле hosts? Не могли бы вы изменить это на 127.0.0.1, чтобы вам не нужен был поиск DNS?

Вам нужны все эти возможности?

  • ProxyPreserveHost - нужно ли Tomcat знать имя хоста? Если нет, то нужно ли его сохранять?
  • retry/aquire/timeout/keepalive — они больше предназначены для случаев, когда прокси не находится на надежном соединении или за брандмауэром. Они не должны быть нужны, когда Apache и Tomcat находятся на одном сервере.
  • Пользовательские файлы журналов для прокси-запросов могут быть полезны, но сам я ими не пользовался.

Не понимаю, почему они могут вызывать проблемы, но я ими не пользовался, поэтому первым предложением было бы вырвать их и посмотреть, улучшит ли это ситуацию. Затем, если они вам понадобятся, добавляйте их обратно по одному, чтобы увидеть, где была проблема.

Поэтому я бы упростил и заменил вот так:

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

А затем попробуйте еще раз.

Я также предполагаю, что вы загружаете mod_proxy? Иногда самые простые вещи можно упустить ;-)

Связанный контент