我有一个 Vaadin 网络应用程序(带有 Websocket Push 的 Servlet 3.0 版),我将其编译成一个 war 文件并部署在 Tomcat 8 上(在 Linux 64 位 RHEL 6 网络服务器上)。然后,我在家庭网络上使用 Google Chrome 尝试连接到它。
描述
全新部署后,使用 Google Chrome 连接到它,该应用在使用的前 15-20 分钟内运行良好(并且响应完美)。
之后,它停止响应。重新加载栏卡住了,尝试重新连接到页面不起作用(新选项卡,新浏览器实例)。 Chrome 卡在“正在等待(主机)...”。
当我清除浏览数据(全部)后,我可以像往常一样连接到网络应用程序。此外,如果我使用 Chrome 隐身模式(没有浏览历史记录),网络应用程序运行良好。 Firefox 也是如此
在 Tomcat 中尝试的解决方案
我尝试将以下参数添加到 Tomcat Context.xml:
<Context cachingAllowed="false" cacheMaxSize ="0" cacheTTL="1">
在 Vaadin 中尝试的解决方案
- 我尝试使用 Vaadin 的 ?restartApplication 选项连接到我的 webapp
- 我尝试了 3 种不同的推送实现(Websocket、长轮询、流)
- 我试过禁用推送
我尝试过的解决方案都没有奏效。有人有什么想法吗?我是否对 Vaadin 存储的用户状态管理不善?
编辑
忘记提及,Tomcat 日志中没有任何异常或不良行为的痕迹。事实上,网络应用程序停止响应后就没有输出。
另一个编辑
我忘了提及网络服务器位于负载平衡器(Google Compute Engine)之后。一位 friend 刚刚建议,可能是负载均衡器和过期 cookie 有问题。
最佳答案
我收到了来自 Vaadin 论坛的建议:
关于tomcat - Vaadin 网络应用程序停止响应,直到我清除浏览器数据或使用 Chrome 隐身模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29178410/