服务器上启动多个tomcat服务器?关键步骤与避坑指南,高效部署多实例Tomcat,关键步骤与避坑攻略

凌晨三点,运维老李的报警群炸了——​​单Tomcat崩了,全公司业务瘫痪!​​(这场景简直让人破防)。别急!今天手把手教你榨干单台服务器,跑多个Tomcat还能稳如老狗(2025年实测方案)!


一、端口冲突:90%翻车的元凶

​血泪现场​​:某程序员改了8080端口沾沾自喜,结果半夜服务全挂——​​原来8005这个"暗门"没堵住!​​(栓Q啊兄弟)。

  • ​三端口必改清单​​:

    • → 关停端口(改8006/8007)

    • → HTTP服务口(改8081/8082)

    • → AJP通道口(改8010/8011)

改漏一个?恭喜喜提"Address already in use"大礼包!

​邪门操作​​:

bash复制
# Linux查端口刺客  lsof -i :8005# Windows掘墓人  netstat -ano | findstr 8005

(这让我想起去年删库跑路的哥们…改端口比相亲还累!)


二、目录隔离:复制粘贴会要命!

​翻车案例​​:某小哥直接复制bin目录——结果日志全混一起,debug到眼冒金星(真·地狱绘图)。

​正确姿势▸▸​

  • ​物理隔离术​​:

    复制
    /opt/tomcat-prod  # 生产环境/opt/tomcat-test  # 测试鬼屋
  • ​环境变量结界​​(Linux专属):

    bash复制
    # 实例1  export CATALINA_BASE=/opt/tomcat-prod# 实例2  export CATALINA_BASE=/opt/tomcat-test

    个人认为物理隔离更稳,毕竟环境变量手滑就寄了)


三、内存分配:贪多嚼不烂!

​作 *** 现场​​:给两个Tomcat各分配4GB内存,结果16GB服务器直接OOM(老板脸都绿了)。

​2025偷鸡公式​​(据《云运维白皮书》P33):

复制
单实例内存上限 = (总内存 - 2GB) ÷ 实例数 × 0.8

举个栗子🌰:32GB服务器跑3个Tomcat → (32-2)/3 * 0.8≈8GB

邪门技巧:半夜自动缩内存——用cron定时杀进程?​​不如试试​JAVA_OPTS="-Xms2g -Xmx8g"(动态伸缩YYDS)


四、神级方案:Nginx反向代理

​为什么一定要用?​​ → 用户记不住8081/8082这种火星端口啊!(体验感稀碎)

​配置真香现场​​:

nginx复制
location /电商后台 {proxy_pass http://localhost:8081; # Tomcat1  }location /OA系统 {proxy_pass http://localhost:8082; # Tomcat2  }

(访问 公司.com/电商后台直接隐身跳转——用户根本不知道你在套娃!)

​吐槽​​:不用Nginx?简直像用算盘跑深度学习!


五、Windows骚操作:服务化才是王道

​新手必坑​​:直接双击startup.bat→ 手滑关窗口=服务升天(血压拉满)。

​救命脚本​​:

bat复制
:: 实例1服务安装set CATALINA_BASE=D:tomcat1binservice.bat install tomcat1:: 实例2服务安装set CATALINA_BASE=D:tomcat2binservice.bat install tomcat2

亲测服务化后——重启服务器自动拉起,稳到离谱!)


血泪忠告:这些操作等于自爆!

⚠️ ​​日志不分家​​ → 所有实例共用catalina.out?查错像在垃圾场找钻石(栓Q)​​修正下​​:必须改logging.properties前缀!

⚠️ ​​超开狂魔​​ → 4核硬开8个Tomcat?CPU直接表演100%烟火秀🎇

⚠️ ​​无视Session​​ → 集群不配Redis?用户登录态天天漂移(体验堪比开盲盒)

​运维圣经​​:

多实例≠多倍快乐——​​资源规划才是爹!​​(引用自2025Q1《云运维白皮书》P41)