问题背景:UI页面点击会偶尔返回error,检查调用日志,发现nginx报502报错,因此本文即排查502报错原因。

如下红框可知,访问本机个备机的服务502了,用时3秒左右(可见并不是超时)

先给出原因:是因为tomcat8默认的acceptCount是100,请求量大的时候,会将一些来不及处理的请求塞到acceptCount,当acceptCount塞满的时候,请求会被丢弃,即我们上面说的nginx报的502错误

解决方案:将acceptCount调大,目前线上调整到了10000,经16小时的观察,没有再报502错误,问题得以解决

排查过程:

怀疑一:首先发现DB的压力突增,见图,但是DBA帮排查后,这个时间点并没有慢查询,因此怀疑是否是服务器的问题

怀疑二:是不是有一台服务有问题

但是经排查nginx日志,两台服务都有502出现。因此这个情况排除

怀疑三:tomcat的本身的问题。

由于nginx现实502的时候,时间有的只有3秒或者更小,因此也不是访问tomcat超时的,所以最大的可能就是tomcat丢弃了请求,经确认确实是丢弃了。

怎么证明这个推断呢?

首先:看请求是否进入tomcat了,好在我们配置了tomcat的访问日志记录:配置如下:

日志:检查502请求的时间,在tomcat里面没有记录日志,可见并没有进入tomcat,从而论证了上面的观点:502是因为请求被丢弃了。

那么为什么会丢弃呢?

看了一些tomcat的默认配置,几个重要的配置:参考:Apache Tomcat 8 Configuration Reference (8.5.78) - The HTTP Connector

可见很重要的一个:acceptCount是100,第一感官,太小了,超过这个队列就被丢弃了。

acceptCount解释:当maxConnections超过10000万(tomcat默认值是10000)的时候,会将多余的连接放到acceptCount中,即默认的tomcat可以支持的最大连接数是10000 + 100 = 10100;

当超过10100的时候,请求就会被丢弃,即nginx的502日志,解决方法:将acceptCount调整成10000。502问题得以解决。

注:

maxConnections与acceptCount的关系

参考文档:

Apache Tomcat 8 Configuration Reference (8.5.78) - The HTTP Connector

tomcat的acceptCount与maxConnections - SegmentFault 思否

文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树首页概览106747 人正在系统学习中

[转帖]总结:nginx502:Tomcat调优之acceptCount的更多相关文章

  1. Tomcat调优及JMX监控

    Tomcat调优及JMX监控 实验背景 ====================================================== 系统版本:CentOS release 6.5 ( ...

  2. tomcat调优的几个方面(转)

    tomcat调优的几个方面 和早期版本相比最新的Tomcat提供更好的性能和稳定性.所以一直使用最新的Tomcat版本.现在本文使用下面几步来提高Tomcat服务器的性能. 增加JVM堆内存大小 修复 ...

  3. tomcat 调优-生产环境必备

    目录 1. tomcat 启动慢 1.1 tomcat 获取随机值阻塞 1.2 tomcat 需要部署的web应用程序太多 1.3 tomcat启动内存不足 2 Connector 调优 2.2 Co ...

  4. Tomcat调优总结(Tomcat自身优化、Linux内核优化、JVM优化)

    Tomcat自身的调优是针对conf/server.xml中的几个参数的调优设置.首先是对这几个参数的含义要有深刻而清楚的理解.以tomcat8.5为例,讲解参数. 同时也得认识到一点,tomcat调 ...

  5. 简谈Tomcat调优

    一.Tomcat和apache的比较 共同点:apache和tomcat都是属于web服务器. 不同点:他们是两个不同的容器,承载的东西不一样,tomcat属于一种java应用的服务 器,只针对jav ...

  6. Tomcat 调优技巧

    Tomcat 调优技巧:1.Tomcat自身调优: ①采用动静分离节约Tomcat的性能: ②调整Tomcat的线程池: ③调整Tomcat的连接器: ④修改Tomcat的运行模式: ⑤禁用AJP连接 ...

  7. 一线大厂Java面试必问的2大类Tomcat调优

    一.前言 最近整理了 Tomcat 调优这块,基本上面试必问,于是就花了点时间去搜集一下 Tomcat 调优都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录,下面就来介绍 ...

  8. Tomcat 调优测试

    测试环境: OS: Ubuntu14.04 64位 (运行在Docker1.9) CPU: Intel i3 双核四线程 Mem: 8G Tomcat版本: Tomcat8.5 Java SDK版本: ...

  9. Tomcat 调优的技巧 (转)

    描述 最近在补充自己的短板,刚好整理到Tomcat调优这块,基本上面试必问,于是就花了点时间去搜集一下tomcat调优都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录,下 ...

  10. Tomcat负载均衡、调优核心应用进阶学习笔记(五):Tomcat调优和Tomcat监控(差评)

    文章目录 tomcat调优 tomcat监控 tomcat调优 vi catalina.sh # --------------------------------------------------- ...

随机推荐

  1. MySQL篇:第四章_详解DML语言

    DML语言 插入 一.方式一 语法: insert into 表名(字段名,...) values(值1,...); 特点: 1.字段类型和值类型一致或兼容,而且一一对应 2.可以为空的字段,可以不用 ...

  2. 【技术总结】从Hash索引到LSM树

    摘要:本文将从实现最简单的Key-Value数据库讲起,然后针对实现过程中遇到的一些瓶颈,采用上述的索引技术,对数据库进行优化,以此达到对数据库的索引技术有一个较为深刻的理解. 前言 数据库算是软件应 ...

  3. 什么是VXLAN?为什么需要VXLAN?

    摘要:本文介绍了什么是VXLAN,以及VXLAN的基本概念和工作原理,包括:为什么需要VXLAN?VXLAN与VLAN之间有啥不同?什么是VTEP?什么是VNI?VXLAN报文是如何封装的?VXLAN ...

  4. 这是你没见过的MindSpore 2.0.0 for Windows GPU版

    摘要:一文带你看看MindSpore 2.0.0 for Windows GPU版. 本文分享自华为云社区<MindSpore 2.0.0 for Windows GPU泄漏版尝鲜>,作者 ...

  5. 如何只用一个小时定制一个行业AI 模型?

    摘要:华为云通过ModelArts Pro提供更多的行业套件和工作流可以供用户直接使用,进一步降低AI行业落地难度,让传统企业客户无需掌握算法知识亦可实现自身业务与AI技术的融合. 去年,在华为开发者 ...

  6. DTSE Tech Talk | 云原生架构下的数字身份治理实践

    摘要:由华为技术大咖VS派拉软件CTO为大家详解云原生架构下的身份管理平台,构建云安全数字身份入口. 本文分享自华为云社区<DTSE Tech Talk | 第4期:云原生架构下的数字身份治理实 ...

  7. python os模块 高频函数(未完待续)

    os.listdir 返回目录下所有的文件,包括文件和文件夹 例如:当前文件夹下为: >>> import os >>> os.listdir() ['Annota ...

  8. 2023陕西省大学生信息安全竞赛web writeup

    前言 早写好了,忘发了,题目质量还行,够我坐大牢 ezpop 简单的反序列化,exp如下 <?php class night { public $night; } class day { pub ...

  9. python之HtmlTestRunner(二)view无法打开问题解决

    默认使用python之HtmlTestRunner会遇到测试报告中的view无法打开的情况 view打不开的情况解决 打开\Lib\site-packages\HtmlTestRunner\templ ...

  10. Feign 进行rpc 调用时使用ribbon负载均衡源码解析

    转载请注明出处: Feign客户端接口的动态代理生成是基于JDK的动态代理来实现的,那么在所有的方法调用的时候最终都会走InvocationHandler接口的实现,默认就是ReflectiveFei ...