【发布时间】:2011-08-13 22:27:57
【问题描述】:
我有一个使用 Java servlet 编写的 Web 应用程序。我使用 Tomcat 7 作为我的 servlet 引擎,但之前使用过 Glassfish 并且遇到了完全相同的问题。
相关页面有一个“统计”部分,每 5 分钟更新一次。由于所涉及的 MySQL 表的大小,生成统计信息大约需要 30 秒。
当我加载页面时,我会显示缓存的统计信息。呈现页面中的所有内容后,我刷新然后关闭输出流。然后我更新统计数据。这样,用户无需等待大约 30 秒即可加载页面并在页面已完全发送后更新统计信息。
问题是,如果我在运行查询的同时刷新页面,页面在查询完成之前不会加载,这意味着虽然初始用户没有任何延迟,但之后有很长的时间延迟。
为什么应用程序会有效地停止? Tomcat 是否应该能够使用另一个工作线程来处理请求,即使一个线程仍然很忙?
谢谢。
【问题讨论】:
-
你把问题说得很好。但是我们仍然需要知道您是如何创建执行查询的。我怀疑问题出在阻止所有人的同步方法上。分享一些代码!
标签: java tomcat jakarta-ee servlets