奇怪的Tomcat中断,可能与maxConnections有关

 永远的菜鸟 发布于 2022-12-21 23:38

在我的公司,我们今天遇到了严重的问题:我们的生产服务器出现故障.大多数通过浏览器访问我们软件的人无法获得连接,但是已经使用该软件的人能够继续使用它.甚至我们的热备用服务器也无法与生产服务器通信,它使用HTTP进行通信,甚至无法访问更广泛的互联网.服务器可以通过ping和ssh访问的整个时间,实际上是非常负载 - 它通常以5%的CPU负载运行,此时甚至更低.我们几乎没有磁盘i/o.

问题开始几天后,我们有了一个新的变化:端口443(HTTPS)正在响应,但端口80停止响应.服务器负载非常低.重启tomcat后,端口80立即开始响应.

我们使用tomcat7,maxThreads ="200",并使用maxConnections = 10000.我们从主内存中提供所有数据,因此每个HTTP请求都很快完成,但是我们有大量用户进行非常简单的交互(这是高中科目选择).但我们似乎不太可能拥有10,000个用户,同时他们的浏览器在我们的页面上打开.

我的问题有几个部分:

"maxConnections"参数可能是导致我们困境的原因吗?

有没有理由不将"maxConnections"设置为可笑的高值,例如100,000?(这样做的成本是多少?)

一旦命中"maxConnections"消息,tomcat会在任何地方输出警告消息吗?(我们没有注意到任何事情).

我们可能会遇到操作系统限制吗?我们使用的是CentOS 6.4(Linux),"ulimit -f"表示"无限制".(防火墙是否了解Tcp/Ip连接的概念?其他地方是否存在限制?)

当tomcat达到"maxConnections"限制时会发生什么?它是否尝试关闭一些不活动的连接?如果没有,为什么不呢?我不喜欢这样的想法,即我们的服务器可以被拥有浏览器的人赎金,发送保持活动以保持连接打开.

但主要问题是,"我们如何修复我们的服务器?"

按照Stefan和Sharpy的要求提供更多信息:

我们的客户直接与此服务器通信

在某些情况下,TCP连接立即被拒绝,在其他情况下超时

即使将我的浏览器连接到网络中的服务器,或者与热备用服务器(也在同一网络中)无法进行通常通过HTTP发生的数据库复制消息,问题就很明显了.

IPTables - 是的,IPTables6 - 我不这么认为.无论如何,当我在注意到问题后进行测试时,我的浏览器和服务器之间没有任何内容.

更多信息:当我们意识到我们使用的是BIO的默认Tomcat7设置(每个连接有一个线程,并且我们有maxThreads = 200)时,看起来我们已经解决了问题.实际上'netstat -an'显示了大约297个连接,它们匹配200 + 100的队列.所以我们将其更改为NIO并重新启动了tomcat.不幸的是,第二天发生了同样的问题.我们可能错误配置了server.xml.

来自catalina.out的server.xml和摘录可在此处获取:https://www.dropbox.com/sh/sxgd0fbzyvuldy7/AACZWoBKXNKfXjsSmkgkVgW_a?dl = 0

更多信息:我做了负载测试.我可以从我的开发笔记本电脑创建500个连接,并且每个都进行3次HTTP GET,没有任何问题.除非我的负载测试无效(Java类也在上面的链接中).

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有