【发布时间】:2011-03-13 16:06:34
【问题描述】:
我最近将我的 Web 应用程序从通过嵌入式 Jetty 实例运行切换到了独立的 Tomcat 实例。一切都被正确映射,Tomcat 开始提供内容。
但是,我的应用程序一次向服务器发出大约 20 个 AJAX POST 请求(以加载各种页面元素)。这在 Jetty 上运行良好,但 Tomcat 服务前几个,然后为接下来的一两个返回以下响应:
Server: Apache-Coyote/1.1
Content-Length: 0
Date: Fri, 09 Jul 2010 02:13:37 GMT
然后继续为请求提供服务,每第三或第四个请求返回“空白”响应。我认为处理请求的方式没有问题,因为 a)它适用于 Jetty 和 b)刷新页面,一些请求在完成之前没有完成,一些在不再完成之前完成。
我想知道 Tomcat 是否不高兴它在同一秒内被来自同一 IP 的许多请求轰炸。有谁知道如何解决这个问题?
编辑: 我相信这个问题与线程有关。如果我让我的 servlet 实现 SingleThreadModel,问题就会消失(当然,这是不推荐使用的并且不是最佳的,我会尝试找出真正的问题在哪里)。我相信它在 Jetty 中工作的原因是因为我使用的是嵌入式 Jetty 实例(而不是独立的 Jetty 实例),它一定只在我的应用程序中使用了单个线程。
【问题讨论】:
-
只是一个健全性检查,但是如果你使用 -verbose:gc 命令行开关运行 tomcat,你是否看到它在 GC 中花费了大量时间?它是否有可能接近其内存限制(XMX)并准备好炸毁?如果一切正常,我们可以考虑更改您的 tomcat 参数以每秒提供更多页面
-
似乎不是,但是我发现问题似乎与线程有关
标签: java ajax jsp tomcat servlets