我有一个包含 2 个 Web 应用程序(JSF2.0 和 JSP)的 tomcat v6。物理服务器是 RedHat Enterprise,内存为 16GB。
在当前形式中,tomcat 通过 apache 2.2 暴露在互联网上,我们使用 mod_jk v1.28 连接器。所以本质上,当用户键入www1.example.com/myWebApp
wherewebApp
时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:8080/myWebApp) 访问上述 tomcat 来访问 Web 应用程序时,Web 应用程序速度很快,页面加载平均最多 2-3 秒。
现在,如果我通过 apache (www1.example.com/myWebApp) 访问同一网络上的同一网络应用程序,则页面明显变慢,页面加载速度平均在 10-12 秒之间。
这是正常的吗?我怀疑 apache ---> mod_jk --> tomcat v6
处理任何给定请求之间发生的腿部工作加起来速度慢?当请求来自 apache 时,有人可以建议我可以提高 Web 应用程序响应能力的方法吗?
更新:
DNS 查找延迟是不可能的,因为 www1.example.com 映射到我们的本地 IP 地址,因此绝对没有 DNS 查找延迟导致此延迟。