我有一个包含2个Web应用程序(JSF2.0和JSP)的tomcat v6。 物理服务器是RedHat Enterprise,内存为16GB。
在目前的forms下,tomcat通过apache 2.2暴露于互联网,我们使用mod_jk v1.28连接器。 所以实质上当用户inputwww1.example.com/myWebApp
, webApp
已经在httpd.conf
configuration为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服务器上的其他东西造成的问题