我们的服务器上运行的是 WildFly 8.1。为了使我们的应用程序可以在端口 80 上访问,我们使用带有 mod_proxy 的 apache。我们将端口 80 上的每个请求都传递给 WildFly。问题是这非常慢。例如,如果我们不使用代理直接访问应用程序,加载时间约为 2 秒。通过代理,加载时间约为 20 秒。
我们在其他应用服务器上使用了相同的代理配置,没有任何问题。此外,我们也尝试使用 nginx 作为代理。同样的问题。此外,我们在互联网上找不到有关此问题的任何信息。这个问题也发布在 WildFly 论坛上(参见https://developer.jboss.org/thread/251358)。但至今未得到回复。如果有人知道哪里出了问题,请告诉我们。
提前致谢
编辑: 我们发现正常的 HTML 页面加载没有任何问题,但例如 java 脚本加载缓慢。这似乎与文件大小有关。小型 JavaScript(用于测试,2 行)加载没有任何问题。其他则需要将近一分钟。我们捕获了网络流量。似乎发送了很多 TCP-Connection-Alive 包。当我们在浏览器中打开一个 javascript 文件时,它会立即出现,但浏览器仍在加载并显示“正在传输数据”。
答案1
我在 Windows 上遇到了同样的问题。我通过更改 proxy_pass 中的 url 解决了它。
变更前:
proxy_pass http://localhost;
更改后:
proxy_pass http://127.0.0.1;
导致此问题的原因在于,localhost 可以解析为 ipv6 地址 (::1) 和 ipv4 地址 (127.0.0.1),而后端并未在两个接口上进行监听。
答案2
看来,如果我们关闭 apache2.conf 中的 keepAlive,页面就会以正常速度加载。