记一次关于tomcat的踩坑的经历
文章发布较早,内容可能过时,阅读注意甄别。
如果一直风平浪静,则说明风浪即将到。 下午,一切都风平浪静。 就来到某台线上服务器,检查自己制作的回滚功能是否生效,发现原本应该在 webapps 目录下备份出 ROOT.warbak 文件的,但是并没有看到这个文件,先去 Jenkins 上看上次发布的脚本执行情况,最后发现是脚本当中某个变量上下文名称没有保持一致,简单,上下一致不就行咯。 此刻,原本安静离开就好,我却不痛不痒的在 webapps 目录下执行了下边的命令:
mv ROOT.{war,warbak}
1
so,原来的 ROOT.war 就变成了 ROOT.warbak,而很快,自己就有点懵逼,服务运行的主目录 ROOT 竟然也消失不见。 瞬间紧张起来,毕竟这是线上啊,先去把负载的权重调整成 0。让访问不再进来,然后将刚才的包在复制回来,问题就解决了。
mv ROOT.warbak ROOT.war
1
这是最迅速的解决办法了,也是后来发现的,而当时,则足足操作了十分钟才恢复正常。
这就引出了这个坑,tomcat 服务中,如果运行主程序的 ROOT.war 被移走或者删除,那么解压出来的 ROOT 目录,也跟随消失。我去找同事说明这个情况,他给出的解释,大概是对的,但是我也不确定,他说,war 包移走,类似于软件卸载了,而他的安装目录也就跟随删除掉了。 原来我个人的理解就是两个文件是完全分离的,就像一个压缩包解压出来一个文件,此时删除压缩包,而解压文件并不会受影响一样的,但是现在看来,这里,并不是这样的。 踩坑让人紧张,踩坑也让人前进!
上次更新: 2024/12/05, 21:39:23