Apache-2.2

顯著的頁面載入速度差異:直接訪問 Tomcat (localhost) VS 通過 Apache (mod_jk 連接器) 訪問 tomcat

  • June 5, 2012

我有一個包含 2 個 Web 應用程序(JSF2.0 和 JSP)的 tomcat v6。物理伺服器是具有 16GB 記憶體的 RedHat Enterprise。

在目前的形式中,tomcat 通過 apache 2.2 暴露在網際網路上,我們使用 mod_jk v1.28 連接器。因此,本質上,當使用者鍵入www1.example.com/myWebAppwherewebApp已配置httpd.conf為 worker1 時,它又指向上面提到的 Tomcat v6 監聽埠 8009 以處理請求。

Tomcatserver.xml有以下相關位:

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

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

在workers.propertiesworker1中已配置為:

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 伺服器上的其他東西

引用自:https://serverfault.com/questions/394323