顯著的頁面載入速度差異:直接訪問 Tomcat (localhost) VS 通過 Apache (mod_jk 連接器) 訪問 tomcat
我有一個包含 2 個 Web 應用程序(JSF2.0 和 JSP)的 tomcat v6。物理伺服器是具有 16GB 記憶體的 RedHat Enterprise。
在目前的形式中,tomcat 通過 apache 2.2 暴露在網際網路上,我們使用 mod_jk v1.28 連接器。因此,本質上,當使用者鍵入
www1.example.com/myWebApp
wherewebApp
已配置httpd.conf
為 worker1 時,它又指向上面提到的 Tomcat v6 監聽埠 8009 以處理請求。Tomcat
server.xml
有以下相關位:<Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
在workers.properties
worker1
中已配置為:worker.worker1.type = ajp13 worker.worker1.host =localhost worker.worker1.port = 8009
在 httpd.conf 中:
JkMount /myWebApp/* worker1
在測試頁面載入速度時,當我通過直接使用其 localhost 地址(localhost:8080/myWebApp)訪問上述 tomcat 來訪問 Web 應用程序時,Web 應用程序速度很快,頁面載入平均最多大約 2-3 秒。
現在,如果我通過 apache (www1.example.com/myWebApp) 在同一網路上訪問相同的 Web 應用程序,則頁面明顯變慢,頁面載入速度平均在 10-12 秒之間。
這是正常的嗎?我懷疑在
apache ---> mod_jk --> tomcat v6
處理任何給定請求之間發生的腿部工作會導致速度變慢?當請求來自 apache 時,有人可以建議我可以提高 Web 應用程序響應能力的方法嗎?更新:
鑑於 www1.example.com 映射到我們的本地 IP 地址,DNS 查找延遲是毫無疑問的,因此絕對沒有導致這種延遲的 DNS 查找延遲。
首先嘗試在 localhost 主機名上進行測試:
即通過 Apache 使用 localhost 主機名。如果速度更快,那麼您就知道您遇到了 DNS 問題。
如果仍然很慢,請嘗試使用 mod_proxy 將代理請求反向到 8080,看看是否很慢,例如
所以首先做
a2enmod proxy
然後在您的 VirtualHost 中(放入單獨的 conf,不要使用 http.conf),然後從 http.conf 中刪除 JKMount
ProxyPassReverse /myWebApp/ http://localhost:8080/myWebApp/
如果不是,那麼您就知道它是 AJP 連接器。是的,那麼它們是導致問題的 Apache 伺服器上的其他東西