问题现象

在某个时刻,后端收到了平时4-6倍的请求(保密起见,略去产品和事件),在10分钟后居然没有请求可以接进来

问题原因

经过分析,首先,是后端服务器的线程池满了,线程池满的原因:
1.server.xml中maxThread=512,导致超过512的之后的请求只能排队,等待有线程释放后,才能被处理;
2.connectionTimeout配置为10000,这个配置导致建立一个socket连接后,如果一直没有收到客户端的FIN,也没有数据过来,那么此连接也必须等到10s后,才能被超时释放,巧了,现网的客户端真的不会发FIN包过来,那一直陪它耗够10秒,和1一起,处理的512个线程只能等待10s后,超时释放才能处理后面排队的请求,所以浪涌一来,分分钟就满了。

接下来是怎么接不进来的呢?

部分用户忍不了了,发了个登出请求,依然在特慢的排队,部分进入了队列的客户端加上前面时间一共等了几秒都没响应,客户端就发了个FIN过来,说要不咱主动断开算了,后端收到请求变为CLOSE_WAIT状态,说你等我会,处理点事,巧了,用户这几秒也受不了了,整个重启客户端,客户端ip再来就变了,结果后端处理好后的第三次握手本该通知"我处理好了,你断吧"的请求发不过去,好死不死,后台还配的重发15次,重发15次需要大概20~30分钟左右,啊哦,于是这条请求一直占着线程20多分钟,这样的请求多点,线程就一直占着,于是别的请求就一直就接不进来咯

问题解决

1.修改maxThread=1024,提高一倍的线程数

2.修改connectionTimeout=2000,没数据了之后2秒就断,别等这么久(keepAlivetimeout是请求处理完了之后等多久关闭连接,connectionTimeout是本条连接等多久没数据关连接)

3.修改/proc/sys/net/ipv4/目录下的tcp_retries2文件为4,别重发15次了,一般也用不了这么多

Tomcat connectionTimeout问题定位处理的更多相关文章

  1. Spring Boot中Tomcat是怎么启动的

    Spring Boot一个非常突出的优点就是不需要我们额外再部署Servlet容器,它内置了多种容器的支持.我们可以通过配置来指定我们需要的容器. 本文以我们平时最常使用的容器Tomcat为列来介绍以 ...

  2. 将PPT文件内容转换为图片放在Email邮件正文中发送

    通过Email推送统计报告.一般除了要求将PPT报告文件作为附件发给用户,同时希望将报告内容在邮件中直观展示. 一份统计报告中经常包含柱状图.饼图.好看的图表,这些信息要直接在Email中展示比较复杂 ...

  3. Tomcat5启动流程与配置详解

    标签:配置 tomcat 休闲 职场 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto. ...

  4. Tomcat9.0环境搭建与源码编译

    使用IntelliJ IDEA  搭建Tomcat9.0项目   准备条件:   下载源码 这里我们下载的Tomcat的源码版本是9.0.12. 下载地址: https://tomcat.apache ...

  5. restclient 访问 springmvc java工程接口

    一.tomcat和nginx 配置 /etc/nginx/conf.d/default.conf location /nsx{ proxy_pass http://nsx; proxy_connect ...

  6. Docker部署网站之后映射域名

    Docker中部署tomcat相信大家也都知道,不知道的可以google 或者bing 一下.这里主要是为了记录在我们启动容器之后,tomcat需要直接定位到网站信息,而不是打开域名之后,还得加个bl ...

  7. 【使用篇二】配置文件application.properties参数详解(21)

    springboot提供了许多启动器starter,大部分的启动器都有配置属性,这些配置属性一般可以在这里找到: xxxxxxxx-autoconfigure-xxxxx.jar/META-INF/s ...

  8. spring boot中通用应用程序属性

    可以在application.properties文件内部application.yml,文件内部或命令行开关中指定各种属性.本附录提供了常见的Spring Boot属性列表以及对使用它们的基础类的引 ...

  9. spring Cloud网关之Spring Cloud Gateway

    Spring Cloud Gateway是什么?(官网地址:https://cloud.spring.io/spring-cloud-gateway/reference/html/) Spring C ...

随机推荐

  1. Stall Reservations POJ - 3190(贪心)

    Oh those picky N (1 <= N <= 50,000) cows! They are so picky that each one will only be milked ...

  2. POJ 3020 Antenna Placement (二分图最小路径覆盖)

    <题目链接> 题目大意:一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,每放置一个基站,至多可以覆盖相邻的两个城市.问至少放置多少个基站才能使得所有的城市都覆盖无线? 解题分析: ...

  3. config-toolkit之config-face

    config-toolkit是当当网开发的开源项目,使用起来非常的方便.对于很多配置都可以写在配置中心中,进行配置数据的获取,这样我们可以不用把很多信息写在了代码里面,例如数据库账号密码等信息. co ...

  4. js算法初窥07(算法复杂度)

    算法复杂度是我们来衡量一个算法执行效率的一个度量标准,算法复杂度通常主要有时间复杂度和空间复杂度两种.时间复杂度就是指算法代码在运行最终得到我们想要的结果时所消耗的时间,而空间复杂度则是指算法中用来存 ...

  5. Print Article HDU - 3507 -斜率优化DP

    思路 : 1,用一个单调队列来维护解集. 2,假设队列中从头到尾已经有元素a b c.那么当d要入队的时候,我们维护队列的下凸性质, 即如果g[d,c]<g[c,b],那么就将c点删除.直到找到 ...

  6. ubantu 执行sudo apt-get update 出现校验不符问题

    一直被这个问题困扰,今天安装mongodb时,看了别人博客暂时解决了,不知道会不会出什么问题. 直接打开软件更新器: 然后点击其他软件,去掉两个独立的多选项: 再执行一遍 sudo apt-get u ...

  7. sql关于对一个字段同时满足多条件判断来筛选查询

    表所有数据 查询userName为abc或xyz的 以下为本菜鸟项目中遇到的问题: 背景: /**  * wangjie 180629  *   * 学生需要查询四种可能的消息  * 1.班级管理员发 ...

  8. MySql基础笔记(一)Mysql快速入门

    Mysql快速入门 一)基本概念 1)表 行被称为记录,是组织数据的单位.列被称为字段,每一列表示记录的一个属性. 2)主键 主键用于唯一的标识表中的每一条记录.可以定义表中的一列或者多列为主键, 但 ...

  9. 潭州课堂25班:Ph201805201 django 项目 第二十课 数据库分析设计图 (课堂笔记)

    https://www.dbdesigner.net/

  10. [COCI2013]DLAKAVAC

    [COCI2013]DLAKAVAC 题目大意: 有一个长度为\(m(m\le1500)\)的\(01\)串\(A\),进行\(k(k\le10^{18})\)次操作.一次操作完的串中若\(A_i=1 ...