1.tomcat
tomcat: web应用服务器
maxConnections(最大连接数): springboot自带的tomcat默认是10000,设置成-1表示不限制连接数
maxThread(最大线程数,也成并发数): 默认200
acceptCount(最大等待数): 默认100
minSpareThreads(最小空闲线程数): 默认10
关系说明:
把tomcat容器比作一个餐厅:
maxConnections就比作餐厅里就餐的餐位,比如说有99个位子
maxThread就比作餐厅的厨师,每一个厨师,在同一时刻,只能给一张餐桌炒菜,就像极了JVM中的一条线程。
acceptCount就比作排号队列,排号的数量不是无限制的,火锅店的排号到了一定数据量之后,服务往往会说:已经客满。
整体流程:
1.如果maxConnections连接数没有满,就不需要取号,因为还有空余的餐桌,直接被大堂服务员领上餐桌,点菜就餐即可.
2.如果 maxConnections 连接数满了,但是取号人数没有达到 acceptCount,则取号成功。如果取号人数已达到acceptCount,则拿号失败,会得到Tomcat的Connection refused connect 的回复信息。
3.如果有餐桌空出来了,表示maxConnections连接数没有满,排队的人,可以进入大堂上桌就餐。
4.就餐需要厨师炒菜。厨师的数量,比顾客的数量,肯定会少一些。一个厨师一定需要给多张餐桌炒菜,如果就餐的人越多,厨师也会忙不过来。这时候就可以增加厨师,一增加到上限maxThreads的值,如果还是不够,只能是拖慢每一张餐桌的上菜速度,这种情况,就是大家常见的“上一道菜吃光了,下一道菜还没有上”尴尬场景。
2.nginx
nginx: 应用服务器
nginx作为多进程单线程和多路io复用模型,所以没有最大线程数这一个概念
nginx有最大连接并发数的概念,官网给出的最大值5w
nginx: 配置
worker_processes: 一般设置成cpu核数,auto也可以
worker_connections: 一个进程能够打开的最大文件数,linux 最大为65535,但是一般为1024,需要查看系统级限制,自行百度查询