У меня есть 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 есть что-то еще, вызывающее проблему