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