(一)容量规划 6 条
军规 1:线程池公式
maxThreads = ((并发峰值 × 平均 RT) / 1000) + 冗余 20 %;
踩坑:压测 2000 QPS、RT 200 ms,理论 maxThreads=500,线上却设 150 导致排队。

军规 2:Connector 选择
• CPU < 4 核且短连接 → BIO(已废弃)。
• 长连接、静态文件多 → NIO。
• TLS 高并发 → NIO + JSSE 或 APR + OpenSSL。

军规 3:内存预算
Heap = (并发请求数 × 平均对象大小 × 平均存活时间) / 2 + 峰值 Session 内存 + 50 % 安全垫。

军规 4:Session 总数上限
maxActiveSessions=10000,超出后触发 LRU 驱逐,防止 Map 膨胀。

军规 5:静态资源分离
Tomcat 只跑动态,静态用 Nginx + CDN,CPU 下降 40 %。

军规 6:容器启动时间
SpringBoot FatJar 内嵌 Tomcat 12 s;外置 Tomcat + war 25 s;通过 jlink 裁剪模块可降到 8 s。

(二)JVM 调优 7 条
军规 7:G1 优于 Parallel
-XX:+UseG1GC -XX:MaxGCPauseMillis=200,Full GC 次数从 5 次/天降到 0。

军规 8:Metaspace 初始值
-XX:MetaspaceSize=256m,防止启动期频繁 Full GC。

军规 9:关闭显式 GC
-XX:+DisableExplicitGC,防止 RMI 定时触发 System.gc()。

军规 10:JMX 安全
-Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=true。

军规 11:GC Log 轮转
-Xlog:gc*:file=/opt/logs/gc-%t.log:time,uptime:filecount=10,filesize=100M

军规 12:OOM 自动 dump
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/dump

军规 13:容器感知
-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0

(三)线程与连接池 7 条
军规 14:acceptorThreadCount=2 只在多核且 TLS 握手重 CPU 场景生效。

军规 15:maxConnections 与 maxThreads 解耦
NIO 模式下 maxConnections=10000,maxThreads=200,防止 C10K 问题。

军规 16:禁用 BIO
protocol="org.apache.coyote.http11.Http11NioProtocol" 显式声明,避免老版本默认 BIO。

军规 17:Executor 共享
<Service name="Catalina">

军规 18:StuckThreadDetectionValve
threshold=600,报警线程栈。

军规 19:AsyncTimeout
NIO 模式下,异步 Servlet 默认 30 s 超时,可在 web.xml 覆盖。

军规 20:禁用 AJP
protocol="AJP/1.3" 如无反向代理,关闭端口 8009,防止 Ghostcat。

(四)日志与监控 6 条
军规 21:AccessLogValve 格式
%{X-Forwarded-For}i %l %u %t "%r" %s %b %D,%D 记录微秒级耗时。

军规 22:RollingFileAppender
maxDays=7,防止磁盘爆。

军规 23:Prometheus JMX Exporter
/opt/jmx_exporter/config.yml 暴露 tomcat_threadpool_currentThreadsBusy 等指标。

军规 24:Grafana Dashboard
线程、Session、GC、响应码 4 个维度,P95 响应时间告警阈值 1 s。

军规 25:慢查询定位
jstack 采样 + Arthas trace javax.servlet.http.HttpServlet service 定位 SQL。

军规 26:错误页面自定义
web.xml 配置 <error-page>

(五)安全加固 7 条
军规 27:删除默认应用
webapps/docs、examples、ROOT、manager 全干掉。

军规 28:关闭自动部署
<Host autoDeploy="false" deployOnStartup="false">

军规 29:隐藏版本号
Server=" " 或自定义字符串,防止扫描。

军规 30:启用 HTTPS
<Connector SSLEnabled="true" sslProtocol="TLS" ciphers="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256...">

军规 31:SameSite Cookie
<Context useHttpOnly="true" sameSiteCookies="strict">

军规 32:SecurityListener
<Listener className="org.apache.catalina.security.SecurityListener" checkedOsUsers="tomcat" />

军规 33:文件上传大小
<maxSwallowSize> 改为 10 MB,防止大文件占满磁盘。

(六)故障演练 7 条
军规 34:kill -3 模拟 Full GC 卡顿,验证 HPA 是否及时扩容。
军规 35:iptables -A INPUT -p tcp --dport 8080 -j DROP 模拟网络分区,哨兵探测到后是否切流。
军规 36:echo 3 > /proc/sys/vm/drop_caches 触发缓存失效,观察 RT 抖动。
军规 37:jmap -histo:live 查看 Session 对象是否泄漏。
军规 38:Arthas ognl 改 SystemProperty 做动态开关演练。
军规 39:磁盘写满 touch bigfile,验证 AccessLogValve 是否阻塞线程。
军规 40:Chaos Mesh 注入 Pod CPU 100 %,验证 readinessProbe 摘除流量。

(七)云原生与 CI/CD 7 条
军规 41:Dockerfile 用 distroless/java17-base,镜像 60 MB → 40 MB。
军规 42:非 root 运行
RUN addgroup -g 1000 tomcat && adduser -D -s /bin/sh -u 1000 -G tomcat tomcat。

军规 43:分层构建
依赖层 COPY pom.xml 单独缓存,代码变更后 5 s 构建完成。

军规 44:Helm Chart
values.yaml 暴露 replicaCount、resources、jvmOpts,支持多环境。

军规 45:优雅停机脚本
preStop: /bin/sh -c "sleep 15 && catalina.sh stop" 让正在处理的请求完成。

军规 46:HPA 双指标
cpuUtilization=60% + tomcat_threadpool_currentThreadsBusy>80% 并发。

军规 47:Keda 基于 Kafka 消息积压自动扩容 Tomcat Pod。


结语
40 条军规是 50 台 Tomcat、200 次故障、3 个 P1 事故后的复盘。请把这份清单贴在 wiki 首页,下次事故来临前,你已经把风险提前清零。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/915231.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/915231.shtml
英文地址,请注明出处:http://en.pswp.cn/news/915231.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析 Amazon Q:AWS 推出的企业级生成式 AI 助手

在人工智能助手竞争激烈的当下&#xff0c;AWS 重磅推出的 Amazon Q 凭借其强大的企业级整合能力&#xff0c;正成为开发者提升生产力的新利器。随着生成式 AI 技术席卷全球&#xff0c;各大云厂商纷纷布局智能助手领域。在 2023 年 re:Invent 大会上&#xff0c;AWS 正式推出了…

物流自动化WMS和WCS技术文档

导语大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。欢迎大家使用我们的仓储物流技术AI智能体。新书《智能物流系统构成与技术实践》新书《智能仓储项目出海-英语手册&#xff0c;必备&#xff01;》完整版文件和更多学习资料&#xff0c;…

Web3.0 实战项目、简历打造、精准投递+面试准备

目录 一、获取真实企业级 Web3.0 项目的 5 种方式 1. 参与开源项目&#xff08;推荐指数&#xff1a;⭐⭐⭐⭐⭐&#xff09; 2. 参与黑客松&#xff08;Hackathon&#xff09; 3. 远程实习 & DAO 协作项目&#xff08;兼职也可&#xff09; 4. Web3 Startup 实战项目合…

pymongo库:简易方式存取数据

文档 基础使用 前提&#xff1a;开发机器已安装mongo配置环境&#xff0c;已启动服务。 macOS启动服务&#xff1a;brew services start mongodb-community8.0 macOS停止服务&#xff1a;brew services stop mongodb-community8.0安装&#xff1a;python3 -m pip install pym…

Java 线程池与多线程并发编程实战全解析:从异步任务调度到设计模式落地,200 + 核心技巧、避坑指南与业务场景结合

多线程编程在现代软件开发中扮演着至关重要的角色&#xff0c;它能够显著提升应用程序的性能和响应能力。通过合理利用异步线程、多线程以及线程池等技术&#xff0c;我们可以更高效地处理复杂任务&#xff0c;优化系统资源的使用。同时&#xff0c;在实际应用中&#xff0c;我…

gitee 分支切换

ssh-keygen -t rsa -C "pengchengzhangcplaser.com.cn" ssh -T gitgitee.comgit remote add origin 仓库地址git config --global user.email "youexample.com"git config --global user.name "Your Name"# 1. 更新远程信息 git fetch origin# …

Vue3生命周期函数

在 Vue 3 中&#xff0c;生命周期钩子函数是指组件从创建到销毁的整个过程中&#xff0c;Vue 自动调用的一些特定函数。它们让你能够在组件的不同阶段执行一些自定义操作。Vue 3 提供了组合式 API 和选项式 API 两种方式来定义生命周期钩子。1. onBeforeMount (组合式 API)作用…

基于SEP3203微处理器的嵌入式最小硬件系统设计

目录 1 引言 2 嵌入式最小硬件系统 3 SEP3202简述 4 最小系统硬件的选择和单元电路的设计 4.1 电源电路 4.2 晶振电路 4.3 复位及唤醒电路 4.5 存储器 4.5.1 FLASH存储 4.5.2 SDRAM 4.6 串行接口电路设计 4.7 JTAG模块 4.8 扩展功能&#xff08;LED&#xff09; …

【开源软件推荐】 SmartSub,一个可以快速识别视频/音频字幕的工具

背景介绍 我就说Github上面能找到好东西吧 事情是这样的 我最近在用PC端的剪映剪辑视频 需要用到它的语音转字幕功能 转完之后&#xff0c;导出的时候 发现 赫然有一项字幕识别的会员权益 我寻思看看什么价格 不贵的话就充了 好家伙&#xff0c;这不看不知道&#xff…

自动驾驶仿真领域常见开源工具

自动驾驶仿真领域常见开源工具1、目录1.1 自动驾驶仿真领域常见开源2、地图&场景2.1、场景播放器-Esmini4、被测对象-智驾软件4.1、Autoware4.4、端到端模型-VAD4.5、端到端模型-UniAD4.6、端到端模型-ThinkTwice4.7、端到端模型-TCP5、评价方法5.1、Leaderboard5.2、Bench…

GPU算力租用平台推荐,价格便宜且有羊毛薅,最低只要0.49/小时!

1.趋动云&#xff0c;这是我近期一直在用的&#xff0c;使用体验还不错&#xff0c;推荐给大家 网址&#xff1a;https://platform.virtaicloud.com/gemini_web/auth/register?inviteCode5f74065eac6d8867eac5c82194e2683a 是否选择一个算力平台我认为有几点需要考虑&#xff…

python学智能算法(二十五)|SVM-拉格朗日乘数法理解

引言 前序学习进程中&#xff0c;已经对最佳超平面的求解有了一定认识。 刚好在此梳理一下: 函数距离 首先有函数距离F&#xff0c;也可以称为函数间隔F&#xff1a; Fmin⁡i1...myi(w⋅xib)F \min_{i1...m}y_{i}(w \cdot x_{i}b)Fi1...mmin​yi​(w⋅xi​b) 几何距离 然后…

vscode 源码编译

windows 环境 下载安装 build tools Visual Studio Build Tools 勾选 C 因为安装详细信息里是 v143&#xff0c;所以单个组件里也要追加两个 143 的勾选 点击安装&#xff0c;安装好重启下电脑 Electron 安装失败&#xff1a;connect ETIMEDOUT 20.205.243.166:443 为防Ele…

读取和写入json,xml文件

一、JSON文件操作​ 1. 核心类​​ ​​QJsonDocument​​&#xff1a;表示整个JSON文档&#xff0c;提供解析&#xff08;fromJson()&#xff09;和序列化&#xff08;toJson()&#xff09;功能。 ​​QJsonObject​​&#xff1a;存储键值对集合&#xff0c;支持嵌套对象和数…

深度学习×第10卷:她用一块小滤镜,在图像中找到你

&#x1f308;【第一节 她看到的是像素点&#xff0c;却试图拼出你整张脸】&#x1f4f8; 图像是什么&#xff1f;她从未见过你&#xff0c;但看见的是你的一片光斑图像&#xff0c;在神经网络的眼里&#xff0c;是一个个数字格子。这些格子&#xff0c;每个都有 0~255 的亮度…

计算机组成原理中的RAM:核心技术深度解析

摘要&#xff1a;本文深度剖析RAM在计算机体系中的核心地位&#xff0c;结合2025年最新技术标准与实测数据&#xff0c;涵盖DRAM工作原理、主流技术对比、非易失性存储革新及未来发展趋势&#xff0c;为硬件开发者和系统架构师提供权威技术参考。一、RAM基础原理与系统交互机制…

C语言—深入理解指针(详)

深入理解指针&#xff08;详解&#xff09;前言一、指针是什么1、指针的定义2、指针的大小二、指针类型1、类型2、不同类型的意义三、野指针1、野指针形成原因2、如何避免野指针四、指针的运算1、 指针整数2、指针-指针3、指针的关系运算五、const修饰指针1、consr修饰变量2、c…

小谈相机的学习过程

前言博主本人并非专职相机开发&#xff0c;还涉及系统的其他几个模块&#xff0c;虽然都属于owner&#xff0c;但是都还在学习探索的一个过程&#xff0c;自认为掌握还不够细致&#xff0c;此篇文章仅梳理&#xff0c;总结&#xff0c;印证自己近五年相机模块的一个学习过程&am…

CentOS7 内网服务器yum修改

1、首先确定的内网服务器是有yum源代理服务器的2、修改 /etc/yum.conf 配置文件&#xff0c;增加代理ip和端口号proxyhttp://ip.ip.ip.ip:port3、备份源是文件sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak4、修改配置文件 vi CentOS-Base…

基于单片机自行车自动防盗报警系统设计

摘 要 本文阐述了自行车防盗报警系统原理&#xff0c;介绍如何用stc89c52单片机实现防盗报警&#xff0c;分析各个部分的工作原理&#xff0c;并给出了原理图和源程序。此设计电路由震动传感器、单片机、无线超再生发射/接收电路、LED显示器和蜂鸣器组成。由于超再生接收是一种…