Назад | Перейти на главную страницу

значительная разница в скорости загрузки страницы: прямой доступ к Tomcat (localhost) VS доступ к tomcat через Apache (коннектор mod_jk)

У меня есть tomcat v6, который содержит 2 веб-приложения (JSF2.0 и JSP). Физический сервер - RedHat Enterprise с памятью 16 ГБ.

В текущей форме tomcat доступен в Интернете через apache 2.2, а мы используем коннектор mod_jk v1.28. по сути, когда пользователь вводит www1.example.com/myWebApp где webApp был настроен в httpd.conf как worker1, который, в свою очередь, указывает на вышеупомянутый tomcat v6, который прослушивает порт 8009 для обработки запроса.

Кот server.xml имеет следующие соответствующие биты:

 <Connector port="8080"
             protocol="HTTP/1.1"
             maxThreads="150"
             connectionTimeout="20000"
             redirectPort="8443"
  />

 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

в worker.properties worker1 был настроен как:

worker.worker1.type = ajp13
worker.worker1.host =localhost
worker.worker1.port = 8009

и в httpd.conf:

JkMount     /myWebApp/* worker1

При тестировании скорости загрузки страницы, когда я обращаюсь к веб-приложению, обращаясь к указанному выше tomcat напрямую, используя его адрес localhost (localhost: 8080 / myWebApp), веб-приложение работает быстро, а загрузка страницы в среднем составляет максимум 2-3 секунды.

Теперь, если я получаю доступ к тому же веб-приложению, в той же сети, за исключением этого раза, перейдя через apache (www1.example.com/myWebApp), страница будет заметно медленнее, а средняя скорость загрузки страницы составит 10-12 секунд.

это нормально? Я подозреваю, что работа ног происходит между apache ---> mod_jk --> tomcat v6 для обработки любого данного запроса добавляется медленная скорость? Может ли кто-нибудь предложить способы, с помощью которых я могу улучшить скорость отклика веб-приложений, когда запросы исходят из apache?

ОБНОВИТЬ:

Задержки поиска DNS исключены, учитывая www1.example.com, который сопоставлен с нашим локальным IP-адресом, поэтому определенно нет задержек поиска DNS, способствующих этой задержке.

Сначала попробуйте протестировать имя хоста localhost:

т.е. с именем хоста localhost через Apache. Если это быстрее, значит, у вас проблема с DNS.

Если он все еще медленный, попробуйте использовать mod_proxy для обратного обращения прокси-запросов на 8080 и посмотрите, медленно ли это, например.

так что сначала сделай

a2enmod proxy

а затем в вашем VirtualHost (поместите в отдельный conf, не используйте http.conf) и удалите JKMount из http.conf

ProxyPassReverse /myWebApp/ http://localhost:8080/myWebApp/

Если это не так, то вы знаете, что это разъем AJP. Это так, значит, на вашем сервере Apache есть что-то еще, вызывающее проблему