熟悉 Tomcat与Netty,请求处理流程,NIO 底层原理,线程池优化。掌握Nginx基本配置,进行流量限制与转移分发,配合OpenResty编写Lua脚本实现业务极高并发。并熟练掌握JMeter

发布时间:2026/11/12 20:15:57

熟悉 Tomcat与Netty,请求处理流程,NIO 底层原理,线程池优化。掌握Nginx基本配置,进行流量限制与转移分发,配合OpenResty编写Lua脚本实现业务极高并发。并熟练掌握JMeter Tomcatserver对应整体tomcat服务内置一个叫 卡特玲娜的 service 。会有多个connector连接负责处理不同的服务端口如http80 s 443。在向里面会有多个host 、 每个虚拟host对应一个文件夹默认webapps每个host里有又会有多个servlet处理不同的post和get请求内置filter过滤器所以request里面可以拿到不同的host和servleturi。默认server.tomcat.max-threads200server.tomcat.max-connections8912server.tomcat.accept-count100server.tomcat.max-http-form-post-size2MBserver.tomcat.min-spare-threads10server.tomcat.connection-timeout60000maxConnections、maxThreads、acceptCount 参数accept-count最大等待数官方文档的说明为当所有的请求处理线程都在使用时所能接收的连接请求的队列的最大长度。当队列已满时任何的连接请求都将被拒绝。accept-count的默认值为100。详细的来说当调用HTTP请求数达到tomcat的最大线程数时还有新的HTTP请求到来这时tomcat会将该请求放在等待队列中这个acceptCount就是指能够接受的最大等待数默认100。如果等待队列也被放满了这个时候再来新的请求就会被tomcat拒绝connection refused。maxThreads最大线程数每一次HTTP请求到达Web服务tomcat都会创建一个线程来处理该请求那么最大线程数决定了Web服务容器可以同时处理多少个请求。maxThreads默认200肯定建议增加。但是增加线程是有成本的更多的线程不仅仅会带来更多的线程上下文切换成本而且意味着带来更多的内存消耗。JVM中默认情况下在创建新线程时会分配大小为1M的线程栈所以更多的线程异味着需要更多的内存。线程数的经验值为1核2g内存为200线程数经验值2004核8g内存线程数经验值800。maxConnections最大连接数官方文档的说明为这个参数是指在同一时间tomcat能够接受的最大连接数。对于Java的阻塞式BIO默认值是maxthreads的值如果在BIO模式使用定制的Executor执行器默认值将是执行器中maxthreads的值。对于Java 新的NIO模式maxConnections 默认值是10000。对于windows上APR/native IO模式maxConnections默认值为8192这是出于性能原因如果配置的值不是1024的倍数maxConnections 的实际值将减少到1024的最大倍数。如果设置为-1则禁用maxconnections功能表示不限制tomcat容器的连接数。maxConnections和accept-count的关系为当连接数达到最大值maxConnections后系统会继续接收连接但不会超过acceptCount的值。我们可以把tomcat比做一个火锅店流程是取号、入座、叫服务员可以做一下三个形象的类比acceptCount 最大等待数可以类比为火锅店的排号处能够容纳排号的最大数量排号的数量不是无限制的火锅店的排号到了一定数据量之后服务往往会说已经客满。maxConnections 最大连接数可以类比为火锅店的大堂的餐桌数量也就是可以就餐的桌数。如果所有的桌子都已经坐满则表示餐厅已满已经达到了服务的数量上线不能再有顾客进入餐厅了。maxThreads最大线程数可以类比为厨师的个数。每一个厨师在同一时刻只能给一张餐桌炒菜就像极了JVM中的一条线程ToB tomcat不用调总共也没几个qps会从前端页面访问tomcat最小10 最大200白天用的繁忙的时候扩容最大值200。晚上就10节约cpu资源也没请求不用考虑并发。ToC 业务一定要动最大200太小了一般配置为4c8g 放到800而且最小最大都一样不要让它扩缩容因为本来服务接口就是专门给Toc接口调用的没有闲置队列设置5000以上连接数5w。当然这个800需要压测得出来就是压最核心的一系列业务场景接口请求的qps压力直接拉满1wqps请求去压开始的时候最大默认200之后得出一个平均的响应的tps之后慢慢的调大tomcat线程池看它的平均tps会不会上去要是增多了就继续加它会到达一直极限就是再增加也不会变大的TPS了那么就不需要动了说明性能瓶颈已经不在tomcat了其他的中间件压测调优思路也一样就是基于现有的TPS慢慢的优化参数。Netty1.Reactor主线程MainReactor对象通过select监听连接事件收到事件后通过Acceptor处理连接事件2.当Acceptor处理连接事件后MainReactor将连接分配给SubReactorsubreactor将连接加入到连接队列进行监听并创建handler进行各种事件处理3.当有新事件发生时subreactor就会调用对应的handler处理4.handler通过read读取数据分发给后面的worker线程处理5.worker线程池分配独立的worker线程进行业务处理并返回结果6.handler收到响应的结果后再通过send将结果返回给client7.Reactor主线程可以对应多个Reactor子线程即MainRecator可以关联多个SubReactor8.开发者可以自定义ChannelPipeline创建多个自定义的Handler类似拦截器NIOBIO阻塞式io每一个客户端读写事件都需要服务器一个线程去处理。NIO非阻塞io一个服务器端线程可以同时处理多个客户端连接请求。selector模式服务端线程主动轮询客户端线程是否有io消息没有则返回-1有就进行处理。epoll模式服务端线程不需要主动轮询由操作系统发送io事件会自动的告诉服务线程去处理请求。Nginx基本配置http{# 定义upstream服务器组 upstream backend_servers{# 使用server指令定义后端服务器 server backend1.example.com;server backend2.example.com weight2;# 权重设置为2表示此服务器接收的请求是其他服务器的两倍 server192.168.1.1backup;# 作为备份服务器当其他非备份服务器都不可用时才会被使用 server192.168.1.2down;# 当前标记为down不会被调度到请求 # 还可以添加其他参数如#keepalive32;# 保持连接到上游服务器的空闲连接数# 负载均衡算法可选默认是轮询#least_conn;# 使用最少连接的服务器#ip_hash;# 使用IP哈希实现会话持久性#hash$request_uri;# 根据请求URI的哈希值选择服务器#hash$remote_addr;# 根据客户端IP的哈希值选择服务器# 其他参数和指令...}server{listen80;server_name your_domain.com;location/{# 引用upstream服务器组进行代理 proxy_pass http://backend_servers;# 其他配置...proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}#...其他配置...}#...其他http块配置...}nginx -t 验证配置文件是否正确nginx -s reload 不重启刷新配置Lua脚本EVAL “return tonumber(ARGV[1]) tonumber(ARGV[2])” 参数个数 参数1 参数2SCRIPT LOAD “return tonumber(ARGV[1]) tonumber(ARGV[2])”返回一个固定的hash值不会变EVALSHA hash 2 3 4启动时就把 SCRIPT LOAD 带上这样就可以防止重启redis丢失lua脚本的情况了。keepalived一台为主服务器MASTER一台为备份服务器BACKUP但是对外表现为一个虚拟IP自定义检测脚本进行探活。Haproxy类似nginx 7层负载均衡。OpenRestyLuaNginx
延伸阅读

更多相关文章

2026/11/8 22:58:11

跨平台SSH管理工具electerm实战指南

1. 跨平台终端管理的核心痛点作为长期使用MacBook进行开发的工程师,我经常需要连接各类服务器和虚拟机环境。传统工作流中,macOS自带的Terminal虽然稳定,但在多会话管理、文件传输、密码记忆等方面存在明显短板。而Windows平台常用的Xshell、…

2026/11/9 6:53:33

企业微信二次开发联系人管理实践

在企业服务和私域运营中,客户资产的沉淀与管理是核心诉求。通过自动化接口接管联系人数据,不仅能打破信息孤岛,还能与企业内部的 CRM 系统实现无缝对接。 今天,我们将结合 星云企业微信开放平台 的底层逻辑,为大家系统…

2026/11/12 16:29:17

触发器本质解析:从门电路到数字时钟的底层逻辑

1. 为什么“时序逻辑电路也不难”这句话背后藏着太多被忽略的真相你是不是也经历过——翻完《数字电子技术基础》前五章,组合逻辑电路画真值表、化简表达式、搭74LS系列芯片,手到擒来;可一到第六章“时序逻辑电路”,瞬间卡壳&…

2026/11/12 20:14:17

杭州电工证怎么复审 全国通用证书如何保障你找工作

杭州电工证怎么复审 全国通用证书如何保障你找工作 你缺一张特种作业证,找工作处处碰壁;你手握一张全国通用的电工证,却不知道怎么复审,怕过期了影响上班。别慌,今天就讲明白杭州电工证怎么复审,以及这份证书到底值不值得你花时间去维护。…

2026/11/12 20:14:17

官窑电工证考试攻略怎么选培训机构别踩坑 全国通用证书这样考

官窑电工证考试攻略怎么选培训机构别踩坑 全国通用证书这样考 怕考不过白交培训费?官窑电工证考试攻略里,选对培训机构是第一步。全国通用的电工证不仅是就业的“敲门砖”,更是职业发展的关键凭证,但很多人因为信息不对称、备考方法不当,最终花了钱却拿…

2026/11/12 20:14:17

杭州电工证怎么复审?官方报名入口全攻略

杭州电工证怎么复审?官方报名入口全攻略 怕考不过白交培训费?别慌,杭州电工证复审其实比你想象的简单,关键在于流程和资料准备。很多人以为复审要跑很多地方,其实只要掌握好【官方报名入口】和注意事项,几分钟就能搞定。本文从濮阳劳务班组负责人的角度…

2026/11/12 20:14:17

德惠市考电工证值不值得考?学历不高也能拿证

德惠市考电工证值不值得考?学历不高也能拿证 你是不是也这样想:学历不高,怕报不上名,考个电工证真的有用吗?别急,今天咱们就聊聊【德惠市考电工证】这事儿,说说它到底值不值得考,帮你理清楚思路。 为什么说“学历不高也能考”?…

2026/11/12 20:14:17

东莞低压电工证好学吗?千万别踩坑,实操考试心里没底怕挂科

东莞低压电工证好学吗?千万别踩坑,实操考试心里没底怕挂科 实操考试心里没底怕挂科?这几乎是每个准备考东莞低压电工证的学员的真实写照。尤其是第一次接触这类考试,既担心理论不过关,又怕实操出错,甚至担心报名流程出问题, 千万别踩坑…

2026/11/12 20:09:13

电工证怎样考怎样操作 别踩坑这几点你得知道

电工证怎样考怎样操作 别踩坑这几点你得知道 之前考的证在外省能不能转过来?这个问题真的太常见了,我天天都在接电话,问这个问那个。说实话,很多人都 千万别踩坑…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/12 0:04:01

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘 工地太忙根本没时间复习考试?你不是一个人。作为一名在南阳卧龙区干了七八年市政公用工程的电工,我深知这个问题的现实性。电工证不仅是工作的“入场券”,更是职业发展的“通行证”,但备考过程…

2026/11/12 0:04:01

双流电工证考别怕挂科!郑州报考避坑指南全攻略

双流电工证考别怕挂科!郑州报考避坑指南全攻略 实操考试心里没底怕挂科?双流电工证考在郑州报名,很多人因为不了解流程、准备不充分,白白浪费时间和金钱。作为三门峡应届工程类毕业生,我也曾经历过这样的焦虑。今天就从零开始,手把手教你如何避开郑州报…

2026/11/12 0:04:01

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少 之前考的证在外省能不能转过来?这个问题确实让不少准备换城市工作的朋友犯了难,尤其像电工证这种实操性很强的证书,很多人担心跨省后证书能不能继续用。其实,只要符合相关流程,是可以顺利转…

2026/11/11 20:27:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/12 9:51:42

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑