问题背景: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. 云图说 | 图解制品仓库服务CodeArts Artifact

    本文分享自华为云社区<[云图说]第277期 图解制品仓库CodeArts Artifact>,作者:阅识风云. 制品仓库服务CodeArts Artifact用于存放源码编译生成的.可运行 ...

  2. GaussDB(for Redis)多租户:读写权限控制和数据库隔离的完美融合

    本文分享自华为云社区<GaussDB(for Redis)企业级特性揭秘之多租户管理>,作者: GaussDB 数据库 . 华为云GaussDB(for Redis)持续完善企业级增强特性 ...

  3. 4大特性看Huawei Cloud EulerOS为开发者带来平滑迁移体验

    摘要:本期<解密Huawei Cloud EulerOS算力释放技术>主题直播中,华为云DTSE技术布道师陆维迪通过剖析传统OS上云面临的性能,安全,弹性等问题,与开发者们分享Huawei ...

  4. IOS证书制作教程

    ​ 转载:IOS证书制作教程 点击苹果证书 按钮 ​ 编辑 点击新增 ​ 编辑 输入证书密码,名称 这个密码不是账号密码,而是一个保护证书的密码,是p12文件的密码,此密码设置后没有其他地方可以找到, ...

  5. 微服务系列-如何使用 RestTemplate 进行 Spring Boot 微服务通信示例

    概述 下面我们将学习如何创建多个 Spring boot 微服务以及如何使用 RestTemplate 类在多个微服务之间进行同步通信. 微服务通信有两种风格: 同步通讯 异步通信 同步通讯 在同步通 ...

  6. 【LibCurl】C++使用libcurl实现HTTP POST和GET、PUT

    libcurl简介 libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl同样支持HT ...

  7. 3.1 《数据库系统概论》SQL概述及数据定义(模式SCHEMA、表TABLE、索引INDEX)

    前言 本篇文章学习书籍:<数据库系统概论>第5版 王珊 萨师煊编著 视频资源来自:数据库系统概论完整版(基础篇+高级篇+新技术篇) 由于 BitHachi 学长已经系统的整理过本书了,我在 ...

  8. 深入剖析 RSA 密钥原理及实践

    一.前言 在经历了人生的很多至暗时刻后,你读到了这篇文章,你会后悔甚至愤怒:为什么你没有早点写出这篇文章?! 你的至暗时刻包括: 1.你所在的项目需要对接银行,对方需要你提供一个加密证书.你手上只有一 ...

  9. 4、SpringBoot连接数据库引入druid

    系列导航 springBoot项目打jar包 1.springboot工程新建(单模块) 2.springboot创建多模块工程 3.springboot连接数据库 4.SpringBoot连接数据库 ...

  10. 玩转 Helm

    0. 前言 在 kubernetes 的系列文章中,我们介绍了 kubernetes 的种种概念,特性.不过对于如何部署并没有介绍,想象下如果 kubernetes 中 pod 的数量达到成百,上千, ...