Tomcat 无法从过多的流量中恢复
当我的 tomcat (6.0.20) maxThreads 达到限制时,我收到预期的错误:
为地址为 null 且端口为 80 的连接器创建的最大线程数 (XXX)
然后请求开始挂在队列上并最终超时。到目前为止,一切都很好。 问题是,当负载下降时,服务器无法恢复,并且永远瘫痪,而不是恢复活力。
有什么提示吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
考虑切换到 NIO,那么你就不会需要担心每个连接 1 个线程的技术要求。如果没有 NIO,限制大约是 5K 线程(5K HTTP 连接),然后就这样崩溃了。有了NIO,Java将能够通过单个线程管理多个资源,因此限制要高得多。边界实际上是可用的堆内存,大约 2GB 最多可以连接 20K。
配置 Tomcat 使用 NIO 就像更改 protocol 属性一样简单="nofollow noreferrer">
/conf/server.xml
中的元素到"org.apache.coyote.http11.Http11NioProtocol “
。Consider switching to NIO, then you don't need to worry about the technical requirement of 1 thread per connection. Without NIO, the limit is about 5K threads (5K HTTP connections), then it blows like that. With NIO, Java will be able to manage multiple resources by a single thread, so the limit is much higher. The border is practically the available heap memory, with about 2GB you can go up to 20K connections.
Configuring Tomcat to use NIO is as simple as changing the
protocol
attribute of the<Connector>
element in/conf/server.xml
to"org.apache.coyote.http11.Http11NioProtocol"
.我认为可能是 Tomcat 中的一个错误,根据问题:
https://issues .apache.org/bugzilla/show_bug.cgi?id=48843
应在 Tomcat 6.0.27 和 5.5.30 中修复
I think may be a bug in Tomcat and according to the issue:
https://issues.apache.org/bugzilla/show_bug.cgi?id=48843
should be fixed in Tomcat 6.0.27 and 5.5.30