Значительная разница в скорости загрузки страницы: прямой доступ к 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 as 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" />

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

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

и в httpd.conf:

JkMount     /myWebApp/* worker1

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

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

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

ОБНОВИТЬ:

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

1 ответ

Решение

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

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

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

так что во-первых

a2enmod proxy

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

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

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

Другие вопросы по тегам