之前在网上看过一篇文章,是讲Tomcat进程意外退出的,我看完感觉好奇,自己也测试了下,果然是有这种问题,所以自己也借此总结一下。
4)对比tomcat停机的时间,查看操作系统的日志/var/log/messages在15:32:28相关日志内容,如图4所示,可以得出以下信息:
执行tomcat ./shutdown.sh 后,虽然tomcat服务不能正常访问了,但是ps -ef | grep tomcat 后,发现tomcat对应的java进程未随web容器关闭而销毁,进而存在僵尸java进程。网上看了下导致僵尸进程的原因可能是有非守护线程(即User Thread)存在,jvm不会退出(当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;如果还有一个或以上的非守护线程则JVM不会退出)。通过一下命令查看Tomcat进程是否结束:
下面的批处理文件能够自动完成jdk的安装,tomcat的安装,web应用的部署,环境变量的注册,tomcat服务的安装和自动启动,但是具体到个人系统上,有待考证!
本文通过阅读Tomcat启动和关闭流程的源码,深入分析不同的Tomcat关闭方式背后的原理,让开发人员能够了解在使用不同的关闭方式时需要注意的点,避免因JVM进程异常退出导致的各种非预见性错误。
大部分人应该都知道使用System.exit()或Runtime.exit()可以直接导致当前JVM进程退出,但是仔细想想这个好像跟SpringBoot没啥关系哈
节前某个部门的测试环境反馈tomcat会意外退出,我们到实际环境排查后发现不是jvm crash,日志里有进程销毁的记录,从pause到destory的整个过程:
对于运行在后台的Docker容器,我们运维人员时常是有登陆进去的需求。登陆Docker容器的方式: 1)使用ssh登陆容器。这种方法需要在容器中启动sshd,存在开销和攻击面增大的问题。同时也违反了Docker所倡导的一个容器一个进程的原则。 参考Docker容器学习梳理--SSH方式登陆容器 2)使用自带命令docker attach登陆容器。命令格式:docker attach container_id。不过docker attach存在的问题是:当多个窗口同时attach到同一个容器时,所有的窗口都会
Dubbo Spring Boot 工程致力于简化 Dubbo RPC 框架在Spring Boot应用场景的开发。同时也整合了 Spring Boot 特性:
修改tomcat配置,将本地localhost更改为自己的域名或者服务器IP,这里使用IP
最近在部署项目,需要装个tomcat,把安装步骤及修改配置步骤记录一下,以防忘记,需要的收藏起来。
mv /home/appuser/opt/SGMWlog/* /home/appuser/opt/log_bak/SGMW/SGMWlog_BAK_20210712/
按照先易后难排序,在vmware虚拟机环境 下模拟,统一防火墙为Firewall ,统一在xshell下操作终端实现搭建. (强烈建议新手 安装选择 带gui服务器 这样终端 操作可以复制,分析文件,熟系操作之后可以最小安装(如果没有桌面,用xshell连接操作终端比较方便),我就是进过这样的坑)
第一个红框代表资源包不存在,可以自己去这个网址找资源包,然后改下url再执行一遍命令就可以了:http://mirrors.estointernet.in/apache/tomcat/
-Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Tomcat:http://mirrors.shuosc.org/apache/tomcat/tomcat-9/v9.0.2/bin/apache-tomcat-9.0.2.tar.gz
连接 ssh root@192.168.1.118 退出 exit 查看tomcat进程 ps -ef |grep tomcat 进入文件夹 cd 文件列表 ll 编辑配置文件 vim /usr/local/tomcat/conf/server.xml 编辑 a 保存 wq! 不保存退出 q! 执行权限 chmod 777 *.sh 启动tomcat查看日志 ./restart.sh && tail -f logs/catalina.out 同步文件到另一台服务器 scp -r 查看定时任务 crontab
镜像是一种轻量级, 可执行的独立软件包, 用来打包软件运行环境和基于运行环境开发的软件, 它包含运行某个软件所需的所有内容, 包括代码, 运行时, 库, 环境变量和配置文件.
有时候需要在一个服务器上部署多个Tomcat,通过不同的端口进行区分,比如,反向代理。但是不想简单的通过复制Tomcat来实现,这样既不方便以后的升级也不方便管理,那么这时候就需要配置Tomcat的单机多实例了。
配置Tomcat服务绑定域名的步骤,其中部分与Tomcat相关的路径,您需要根据实际情况进行调整。
前言 今天,遇到一个内存不足的问题而导致服务崩塌的情况,特此记录一下333! 错误警告: Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::c
在容器化技术的领域中,Docker 无疑是最为广泛使用的工具之一。而 docker run 命令则是使用 Docker 进行容器管理的核心命令之一。本文将深入探讨 docker run 命令的使用方法,旨在帮助初学者快速入门并掌握该命令的各种用法。
Linux上如果尚未安装JDK,可以参考博文https://mp.csdn.net/postedit/80181422
去官网下载linux系统上jdk的安装包jdk-8u181-linux-x64.tar.gz,在Linux的/usr目录下新建文件夹java,可以使用命令:cd /usr mkdir java新建文件夹。并且通过xftp工具将jdk安装包上传到java文件中。
所谓容器,我们可以理解为是一个虚拟的计算机,其中运行着操作系统,操作系统中运行着我们部署的应用。
查看当前系统jdk rpm -qa|grep jdk 如果出现关于jdk自带的openjdk,这是linux自带的需要先卸载 yum remove openjdk 1,创建文件夹 把安装好的.gz的压缩包放在你想解压的目录下,或者使用cp或者mv移动到你想安装的目录 ls -l 显示当前路径下的文件 mv jkd-8u191 -linux-x64.tar.gz /usr/local/jdk1.8 mv apache-tomcat-8.5.35.tar.gz /user/local/tomcat 2,解压(这里是解压到当前目录) tar -zxvf jkd-8u191 -linux-x64.tar.gz tar -zxvf apache-tomcat-8.5.35.tar.gz 3,配置环境变量 vim /etc/profile 点击i 进入编辑模式 在最后面追加 export tomcat_home=/usr/local/tomcat export java_home=/usr/local/jdk1.8 export PATH=PATH:PATH:PATH:{tomcat_home}/bin:${java_home}/bin: 4,让配置文件立即生效 点击esc,shift+:输入wq!强制保存退出 source /etc/profile 5,查看是否配置成功 java -version javac java 6,启动tomcat服务 方式一:直接启动 ./startup.sh 方式二:作为服务启动 nohup ./startup.sh & 方式三:控制台动态输出方式启动 ./catalina.sh run 动态地显示tomcat后台的控制台输出信息,Ctrl+C后退出并关闭服务 关闭服务 ./shutdown.sh
我这里下载的是tomcat8.5,网址是https://tomcat.apache.org/download-80.cgi,截图说明
1、在Linux系统下,重启Tomcat使用命令操作的! ** 方法一:** 首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 .
上文我们成功申请到了阿里云服务器,这次我们需要把程序运行在服务器上了,下面我们分步骤来讲:
环境说明: 操作系统:ubuntu 18.0.4 Tomcat版本:Tomcat 9
安装环境:CentOS7 安装方式:源码安装 软件:apache-tomcat-7.0.29.tar.gz 下载地址:http://tomcat.apache.org/download-70.cgi
环境说明: 系统:Win10专业版 JDK版本:1.8 Tomcat版本:8.5.57 开发环境:IDEA 2020.03 Ultimate
Tomcat 是 Apache 旗下的开源应用服务器,Java 的 Web 应用经常会选择它作为应用服务器来提供 Web 服务。
什么是Docker? Docker就是一个容器,但是这个容器里什么都没有,所以我们根据需求不同就要不同的环境,这些环境就是镜像,我们可以用一个镜像生成多个容器,每个容器都有它的ID或NAME。
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
有时候写Shell的脚本,用于顺序执行一系列的程序。 有些程序在停止之后并没能立即退出,就例如有一个 tomcat 挂了,就算是用 kill -9 命令也还没瞬间就结束掉。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100308.html原文链接:
之前总玩v8虚拟机,最近看到腾讯云学生套餐很实惠就租了个linux服务器搭一个项目,做下这个项目部署全记录,即为了方便以后查看,同时也分享下自己的经验,不足之处还请多多指教,废话不多说,直接开始!!!
查看版本,在tomcat目录下执行/bin/catalina.sh version,可查看对应的软件版本信息
最近玩springboot,自己有一个服务器,写完了都放到服务器去部署,刚开始用的gui-manager方式,但是慢慢的发现,这个方法部署太慢了。大家都知道一般的小水管宽带的上传也就70k左右,部署一次等n久。于是想着能不能自动部署,每次把代码提交即可。经过查找资料结合自身已有的了解,找到了Jenkins,很强大,但是配置什么的略微麻烦,看网上的教程貌似也要编写脚本,于是想着何不自己直接撸个脚本算了,于是各种查找各种学脚本,于是有了如下简单的部署脚本,在结合crontab任务,基本可以满足自己的需求了。 贴
在tomcat下,context元素有一个crossContext属性,如果配置为true,则可以实现在同一个tomcat下的多个web应用之间实现ServletContext对象访问。该属性主要用于跨应用访问数据。 在实际项目中遇到一个奇葩需求:在同一个页面框架下嵌套了2套应用!!! app1和app2部署在同一个tomcat,且session超时时间使用tomcat全局配置。 app2存在定时ajax刷新,导致app2不会存在session超时的问题;因此,如果用户长期停留在app2某个定时刷新的页面,就会出现如下情况; app2不会出现session超时,但是app1在指定时间之后就会session超时,这时访问app2页面不会跳转到登录页面,而点击app1页面元素就会退出登录,重新跳转到登录页面。 给用于一种很不自然的体验! 为了解决这个问题,做如下调整: 1. 首先,必须明确一个现实:app1和app2是2个独立的应用,所以对于浏览器访问都会在服务器端各自生成独立的session。 2. tomcat支持配置context元素的crossContext属性为true,使得在app2中可以访问到app1应用的ServletContext对象。 利用这个特性,可以在app2中知道app1应用下对应的session是否已经超时。如果已经超时,则在访问app2时就退出登录,跳转到登录页面。
jdk-8u161-linux-x64.tar.gz 链接: https://pan.baidu.com/s/1zQGL_cfN5jFWshZkAJOkNw 密码:0u7d
本次教程,Tomcat项目打包成war包到服务器上发布,Springboot项目打包为jar或war包到服务器上发布:
5、安装配置好镜像加速源(由于正常拉取镜像是从境外的docker官网拉取,建议设置镜像加速源) :轻量应用服务器 安装 Docker 并配置镜像加速源 - 最佳实践 - 文档中心 - 腾讯云 (tencent.com)
export CATALINA_BASE CATALINA_HOME TOMCAT_HOME
Linux 系统服务是在Linux启动时自动加载,并在Linux退出时自动停止的系统任务。在Linux 启动过程中,我们可以看得很多“starting … ”提示信息,该信息表示正在启动系统服务;而在Linux 退出时,我们也能够看到相应的“Stopping … ”信息,表示系统服务正在停止。Linux自身有许多系统任务,如“network” 服务用于支持网络连接等。CAMS 在安装过程中,会自动加入三个系统任务,以保证在Linux 启动时,CAMS 服务自动启动;而在Linux 关闭时,CAMS服务也自动停止。这三个服务分别时:
领取专属 10元无门槛券
手把手带您无忧上云