显着的页面加载速度差异:直接访问Tomcat(localhost)VS通过Apache访问tomcat(mod_jk连接器)

我有一个包含2个Web应用程序(JSF2.0和JSP)的tomcat v6。 物理服务器是RedHat Enterprise,内存为16GB。

在目前的forms下,tomcat通过apache 2.2暴露于互联网,我们使用mod_jk v1.28连接器。 所以实质上当用户inputwww1.example.com/myWebAppwebApp已经在httpd.confconfiguration为worker1,而worker1又指向上面提到的监听端口8009的tomcat v6来处理请求。

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已被configuration为:

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

并在httpd.conf中:

 JkMount /myWebApp/* worker1 

在testing页面加载速度时,当我通过直接使用本地主机地址(localhost:8080 / myWebApp)访问上述tomcat来访问Web应用程序时,Web应用程序速度很快,页面加载速度平均大约为2-3秒。

现在,如果我访问相同的networking应用程序,除了这次通过apache(www1.example.com/myWebApp)在同一networking上,页面明显变慢,页面加载速度平均在10-12秒之间。

这是正常的吗? 我怀疑在apache ---> mod_jk --> tomcat v6之间发生的腿部工作是否会加速到低速? 有人可以提出一些方法来提高Web应用程序在请求来自Apache时的响应速度吗?

更新:

由于www1.example.com被映射到我们的本地IP地址,所以DNS查询延迟是没有问题的,所以肯定没有DNS查找延迟导致延迟。

先尝试在本地主机名上testing:

即通过Apache使用localhost主机名。 如果速度更快,那么你知道你有一个DNS问题。

如果它仍然很慢尝试使用mod_proxy反向代理请求到8080,看看是否缓慢eg

所以先做

 a2enmod proxy 

然后在你的VirtualHost(放在一个单独的conf中,不要使用http.conf),并从http.conf中移除JKMount

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

如果不是那么你就知道它的AJP连接器。 它是,那么他们是你的Apache服务器上的其他东西造成的问题