http://itindex.net/detail/58707-%E5%81%87%E6%AD%BB-tomcat-%E5%AE%B9%E5%99%A8

为了确保服务不会被过多的http长连接压垮,我们需要对tomcat设定个最大连接数,超过这个连接数的请求会拒绝,让其负载到其它机器。达到保护自己的同时起到连接数负载均衡的作用。

一、解决方案:修改tomcat配置文件,修改最大连接数(增大) 
修改server.xml配置文件,Connector节点中增加acceptCount和maxThreads这两个属性的值,并且使acceptCount大于等于maxThreads:

<Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"        maxConnections="800"acceptCount="500"maxThreads="400"/>

二、实验验证: 
maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200 
acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100

这两个值(acceptCount+maxThreads)如何起作用,请看下面三种情况 
情况1:接受一个请求,此时tomcat起动的线程数没有到达maxThreads,tomcat会起动一个线程来处理此请求。 
情况2:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,tomcat会把此请求放入等待队列,等待空闲线程。 
情况3:接受一个请求,此时tomcat起动的线程数已经到达maxThreads,等待队列中的请求个数也达到了acceptCount,此时tomcat会直接拒绝此次请求,返回connection refused

同时加上maxConnections 
原来tomcat最大连接数取决于maxConnections这个值加上acceptCount这个值,在连接数达到了maxConenctions之后,tomcat仍会保持住连接,但是不处理,等待其它请求处理完毕之后才会处理这个请求。

三、总结: 
tomcat能支持最大连接数由maxConnections加上acceptCount来决定。同时maxThreads如何设定?

一般的服务器操作都包括两方面:1计算(主要消耗cpu),2等待(io、数据库等)

第一种极端情况,如果我们的操作是纯粹的计算,那么系统响应时间的主要限制就是cpu的运算能力,此时maxThreads应该尽量设的小,降低同一时间内争抢cpu的线程个数,可以提高计算效率,提高系统的整体处理能力。

第二种极端情况,如果我们的操作纯粹是IO或者数据库,那么响应时间的主要限制就变为等待外部资源,此时maxThreads应该尽量设的大,这样 才能提高同时处理请求的个数,从而提高系统整体的处理能力。此情况下因为tomcat同时处理的请求量会比较大,所以需要关注一下tomcat的虚拟机内存设置和linux的open file限制。

现实应用中,我们的操作都会包含以上两种类型(计算、等待),所以maxThreads的配置并没有一个最优值,一定要根据具体情况来配置。

最好的做法是:在不断测试的基础上,不断调整、优化,才能得到最合理的配置。 
acceptCount的配置,我一般是设置的跟maxThreads一样大,这个值应该是主要根据应用的访问峰值与平均值来权衡配置的。 
如果设的较小,可以保证接受的请求较快响应,但是超出的请求可能就直接被拒绝 
如果设的较大,可能就会出现大量的请求超时的情况,因为我们系统的处理能力是一定的。

转载于:https://www.cnblogs.com/shengs/p/10140706.html

Tomcat容器做到自我保护,设置最大连接数(服务限流:tomcat请求数限制)相关推荐

  1. 亿级流量架构之服务限流思路与方法

    为什么要限流 日常生活中,有哪些需要限流的地方? 像我旁边有一个国家AAAA景区,平时可能根本没什么人前往,但是一到五一或者春节就人满为患,这时候景区管理人员就会实行一系列的政策来限制进入人流量, 为 ...

  2. 互联网高并发解决方案(2)--高并发服务限流特技

    RPC和本地JAVA调用的区别 RPC远程调用:一般是可以跨平台使用的,采用Socket技术,只要语言支持socket技术就可以进行互相通信.其实就是socket+反射实现的. 本地调用:只能支持Ja ...

  3. 微服务架构服务限流方案详解

    话说在 Spring Cloud Gateway 问世之前,Spring Cloud 的微服务世界里,网关一定非 Netflix Zuul 莫属.但是由于 Zuul 1.x 存在的一些问题,比如阻塞式 ...

  4. Sentinel微服务限流、熔断、降级介绍(一)

    概述 在互联网应用中,会有很多突发性的高并发访问场景,比如双11大促.秒杀等.这些场景最大的特点就是访问量会远远超出系统所能够处理的并发数. 在没有任何保护机制的情况下,如果所有的流量都进入服务器,很 ...

  5. 微服务架构 — 服务治理 — 服务限流、服务降级、服务熔断

    目录 文章目录 目录 服务限流 服务降级 服务熔断 服务限流 C ⇄ S 的异常问题:C 的请求太多,超出 S 的服务能力,导致 S 不可用.例如:DoS 攻击,企图耗尽被攻击对象的资源,让目标系统无 ...

  6. 03.服务限流实现方案

    Sentinel概述 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 是面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从限流.流量整形.熔断降级.系统负载保护等 ...

  7. Sentinel:服务限流

    文章目录 创建工程测试工程 流控 熔断 热点 授权规则 系统规则 @SentinelResource 配置持久化 执行流程 创建工程测试工程 1.导入依赖 <parent><grou ...

  8. 如何计算服务限流的配额

    文章来源:https://zhenbianshu.github.io/2020/03/how_to_cal_isolation_limit.html | 问题 请求被限流 之前的文章提到过我们服务使用 ...

  9. 架构设计之「服务限流」

    架构设计之「服务限流」 原文:架构设计之「服务限流」 上一篇我们聊过了架构设计中的「服务隔离」模式,今天我们继续来探索一下在分布式系统架构中的另一个常用的设计:服务限流. 那么,什么是「服务限流」呢? ...

最新文章

  1. java项目close wait_服务器TIME_WAIT和CLOSE_WAIT详解和解决办法
  2. 廖雪峰python教程百度云-廖雪峰Python教程的配套视频教程,全套完整版!
  3. linux搭建交换机日志,用LINUX的SYSLOG做交换机、路由器的日志服务器
  4. iOS-控件响应用户控制事件之事件处理
  5. Storm的BaseBasicBolt源码解析ack机制
  6. Solr缓存清空、重新加载与修改
  7. mac 更换默认蓝牙适配器_聊一聊蓝牙名字和地址的来龙去脉
  8. 《精解Windows8》——2.10 共享
  9. android 图片上传java,php服务器
  10. python wechat flask_python3+flask不能解析消息
  11. GNSS数据下载网址整理
  12. C语言之volatile
  13. 多臂赌博机Multi-Armed Bandit(MAB)
  14. 使用清华源、百度源等快速pip install xxx 安装Python库
  15. 大牛讲解信号与系统以及数字信号处理
  16. Hystix、Feign、Zuul网关
  17. 疯子网页采集器之提取内容教程
  18. 点、线、圆、矩形、抛物线的类定义_点、圆、球和n维球体积之间有怎样的爱恨情仇?让我们一起扒开他们之间鲜为人知,惊为天人的秘密关系!...
  19. Debian 二进制文件(华文宋体字体)打包解包
  20. 锐龙 r55500u相当于什么显卡

热门文章

  1. C# json解析字符串总是多出双引号_在JavaScript应用中将CSV转换为JSON
  2. iOS限定UITextField的输入格式
  3. 武大50名学生将卫星送上天!用了老师800万科研经费,搭长征八号“顺风车”升空...
  4. 过半网友支持马斯克卖掉特斯拉10%股票,马斯克:会遵守投票结果
  5. 靠WiFi信号就能检测呼吸跌倒!北大这项硬科技研究越来越藏不住了
  6. 柔宇冲刺科创板IPO:3年营收5亿净亏31亿,乐视掘墓人刘姝威坐镇董事会
  7. 英伟达一大波硬件来袭:今日GTC发布专业GPU与DPU,为收购ARM将在英国建超算
  8. “忽悠”智能机器人,竟然改改物品纹理就成功了!北航新研究:时空融合对抗攻击算法...
  9. 为什么在重庆比北京更容易迷路?Nature子刊:大脑GPS系统呈蜂窝状,弯路多了就“变形”...
  10. 入围CVPR最佳论文,这项AI基础研究让我们对虎牙刮目相看