精华内容
下载资源
问答
  • tomcat进程自动退出问题排查

    千次阅读 2019-05-11 20:58:09
    1.使用命令ps -ef | grep 'java’查看java进程,发现tomcat进程没了; 2.查看tomcat日志,发现日中中没有任何进程被kill的记录,说明tomcat进程不是人为杀掉的; 3.使用命令egrep -i -r ‘killed process’ /var/log...

    1.使用命令ps -ef | grep 'java’查看java进程,发现tomcat进程没了;

    2.查看tomcat日志,发现日中中没有任何进程被kill的记录,说明tomcat进程不是人为杀掉的;

    3.使用命令egrep -i -r ‘killed process’ /var/log查看系统中有没有杀进程的记录,说明tomcat进程不是因为出现内存不足而被系统给杀掉。

    4.查看tomcat启动脚本r_public.sh,如下:
    在这里插入图片描述

    5.执行脚本r_public.sh后,直接关闭ssh窗口,再次连接查看java进程,发现没有tomcat进程。

    6.执行脚本r_public.sh后,按Ctrl+C后,然后关闭ssh窗口,再次连接查看java进程,发现tomcat进程正常。

    7.确认问题,是因为直接关闭ssh窗口,导致tomcat进程也退出了。

    8.改进方法:
    1):执行启动脚本后,按住键盘Ctrl+C退出;
    2):修改启动脚本,增加set -m命令设置开启作业控制,修改后脚本如下:
    在这里插入图片描述

    展开全文
  • Tomcat 进程自动退出问题

    万次阅读 2016-12-28 10:14:23
    后来遇到一个比较怪异的问题:应用跑一段时间,Tomcat进程就挂掉了。而且这个没有什么规律,不是在特定操作执行时,或者特定时间出现。同时没有任何的日志。本来以为是其它的服务的人把我们的不小心kill掉了,但kill...

    最近在项目里遇到这样一个问题:

    应用部署在线下服务器上,线下服务器,相对来说配置低一些,同时可能和其它的服务部署在一起。

    后来遇到一个比较怪异的问题:

    应用跑一段时间,Tomcat进程就挂掉了。

    而且这个没有什么规律,不是在特定操作执行时,或者特定时间出现。同时没有任何的日志。本来以为是其它的服务的人把我们的不小心kill掉了,但kill的有点太频繁了,同时和QA同学了解到,在线下服务器上的其他服务,目前都没有操作过,排除了人为的可能。

    剩下的就只能从应用自身的问题入手了。但整个进程挂掉的时候,并没有任何日志生成,同时也没有生成Crash文件。还尝试在启动脚本中增加

    -XX:+HeapDumpOnOutOfMemoryError,想要分析下堆内数据,进程退出时也是什么都没生成。

    这时就只能请教万能的网络了,Google之后了解到一个Linux OOM Killer。按照这个思路和提供的方式去查看了服务器的日志,果然问题在这儿。

    Linux OOM Killer

    在这里有一个关于OOM Killer的描述

    It is the job of the linux ‘oom killer’ to sacrifice one or more processes in order to free up memory for the system when all else fails. It will also kill any process sharing the same mm_struct as the selected process, for obvious reasons. Any particular process leader may be immunized against the oom killer if the value of its /proc//oomadj is set to the constant OOM_DISABLE (currently defined as -17).

    长话短说就是,Linux Kernel的这个Killer,会在内存不足的时候kill掉任何 不受保护的进程,从而释放内存,保证Kernel的运行。

    要让自己的进程成为一个受保护的进程,请注意这一句:

    Any particular process leader may be immunized against the oom killer if the value of its /proc//oomadj is set to the constant OOM_DISABLE (currently defined as -17 ).

    操作方式上可以使用

    echo -17 > /proc/$PID/oom_adj
    更多可以参考这个网页( http://backdrift.org/oom-killer-how-to-create-oom-exclusions-in-linux )

    ,写一个定时任务,执行脚本,把当前进程的Pid加到这个oomadj里。

    那怎么判断进程是不是被OOM Killer给干掉了呢?

    可以从 /var/log/messages 这个文件里查找下,是否有之前pid对应的进程Kill信息,或者进程名,比如我们这里说的是Java应用,就直接查Java的就可以,像

    这样的内容,

    “Out of memory: Kill process 31201 (java) score 783 or sacrifice child

    如果没有这个文件的权限,也可以直接使用如下命令

    dmesg| egrep -i ‘killed process’

    会有类似这样的输出

    Killed process 13090 (java)

    知道是被OOM Killer干掉的,那下一步就只能是保证环境的内存够用了,少被其它程序占用,加到受保护进程里,或者直接换个内存充足的服务器吧。 ^_^.

    最后来看张图

    (from: http://turnoff.us/geek/oom-killer/)

    Reference

    http://unix.stackexchange.com/questions/153585/how-the-oom-killer-decides-which-process-to-kill-first

    http://backdrift.org/oom-killer-how-to-create-oom-exclusions-in-linux

    http://stackoverflow.com/questions/10300883/tomcat-stopped-without-any-log-or-any-stack

    展开全文
  • 最近在项目里遇到这样一个问题:应用部署在线下服务器上,线下服务器,相对来说配置低一些,同时可能和其它的服务部署在一起。后来遇到一个比较怪异的问题:应用跑一段时间,Tomcat进程就挂掉了...

    最近在项目里遇到这样一个问题:

    应用部署在线下服务器上,线下服务器,相对来说配置低一些,同时可能和其它的服务部署在一起。

    后来遇到一个比较怪异的问题:

    应用跑一段时间,Tomcat进程就挂掉了。

    而且这个没有什么规律,不是在特定操作执行时,或者特定时间出现。同时没有任何的日志。本来以为是其它的服务的人把我们的不小心kill掉了,但kill的有点太频繁了,同时和QA同学了解到,在线下服务器上的其他服务,目前都没有操作过,排除了人为的可能。

    剩下的就只能从应用自身的问题入手了。但整个进程挂掉的时候,并没有任何日志生成,同时也没有生成Crash文件。还尝试在启动脚本中增加

    -XX:+HeapDumpOnOutOfMemoryError,想要分析下堆内数据,进程退出时也是什么都没生成。

    这时就只能请教万能的网络了,Google之后了解到一个Linux OOM Killer。按照这个思路和提供的方式去查看了服务器的日志,果然问题在这儿。

    Linux OOM  Killer

    在这里有一个关于OOM Killer的描述

    It is the job of the linux 'oom killer' to sacrifice one or more processes in order to free up memory for the system when all else fails. It will also kill any process sharing the same mm_struct as the selected process, for obvious reasons. Any particular process leader may be immunized against the oom killer if the value of its /proc/<pid>/oomadj is set to the constant OOM_DISABLE (currently defined as -17). 

    长话短说就是,Linux Kernel的这个Killer,会在内存不足的时候kill掉任何不受保护的进程,从而释放内存,保证Kernel的运行。

    要让自己的进程成为一个受保护的进程,请注意这一句:

    Any particular process leader may be immunized against the oom killer if the value of its /proc/<pid>/oomadj is set to the constant OOM_DISABLE (currently defined as -17)

    操作方式上可以使用

    
    echo -17 > /proc/$PID/oom_adj

    更多可以参考这个网页(http://backdrift.org/oom-killer-how-to-create-oom-exclusions-in-linux)

    ,写一个定时任务,执行脚本,把当前进程的Pid加到这个oomadj里。

    那怎么判断进程是不是被OOM Killer给干掉了呢?

    可以从/var/log/messages这个文件里查找下,是否有之前pid对应的进程Kill信息,或者进程名,比如我们这里说的是Java应用,就直接查Java的就可以,像

    这样的内容,

    "Out of memory: Kill process 31201 (java) score 783 or sacrifice child

    如果没有这个文件的权限,也可以直接使用如下命令

    dmesg | egrep -i 'killed process'

    会有类似这样的输出

    Killed process 13090 (java)

    知道是被OOM Killer干掉的,那下一步就只能是保证环境的内存够用了,少被其它程序占用,加到受保护进程里,或者直接换个内存充足的服务器吧。 ^_^.

    最后来看张图


    (from: http://turnoff.us/geek/oom-killer/)

    Reference

    http://unix.stackexchange.com/questions/153585/how-the-oom-killer-decides-which-process-to-kill-first


    http://backdrift.org/oom-killer-how-to-create-oom-exclusions-in-linux


    http://stackoverflow.com/questions/10300883/tomcat-stopped-without-any-log-or-any-stack

    关注Tomcat那些事儿,发现更多精彩文章!了解各种常见问题背后的原理与答案。深入源码,分析细节,内容原创,欢迎关注。

    展开全文
  • 在linux上部署的时候,有时候程序异常了,会导致jar或者tomcat进程自定关闭了,这时候想要它自动重启怎么办。 1.启动jar的shell脚本 #!/bin/bash #判断查看进程中8080端口是否存在 if [ "$(netstat -tlnp|grep ...

    在linux上部署的时候,有时候程序异常了,会导致jar或者tomcat进程自定关闭了,这时候想要它自动重启怎么办。

    1.启动jar的shell脚本

    #!/bin/bash  
    #判断查看进程中8080端口是否存在
    if [ "$(netstat  -tlnp|grep 8080|grep -v grep|wc -l)" == 0 ]  
    then
        #输出
        echo "Start"  
        #删除日志文件
        rm -rf /java/logs/10080.log
        #后台启动jar
        nohup java -jar /java/jar/server/tcp-server-10080.jar > /java/logs/10080.log 2>&1 &  
    #存在输出已启动
    else
        echo "it's running..."
    fi

     

    2.启动tomcat脚本

    原本我们在bin目录下有一个startup.sh脚本可以启动tomcat,但是这个脚本没有办法做到自动重启,怎么办,我们在写一个脚本来包装它。

    #!/bin/bash  
    #判断查看进程中8080端口是否存在
    if [ "$(netstat  -tlnp|grep 8080|grep -v grep|wc -l)" == 0 ]  
    then
    	echo "Start"  
    	#进到tomcat的bin目录下,执行startup.sh脚本
        cd  /java/apache-tomcat-8.5.40/bin/; sh startup.sh
    #存在输出已启动
    else
    	echo "it's running..."
    fi
    

     3.定时任务

    有了这个脚本还不够,我们还需要把这个脚本加入定时任务里面去。

    让它每隔一分钟执行一次,这样他会不停的去执行这个脚本,如果发现进程里面8080端口不存在了,就会执行脚本把服务重新起来。

    定时任务命令: crontab -e

    按 “”i” 在最后一行插入定时任务

    */1 * * * * /java/startup/8080.sh  > /dev/null 2>&1

    每隔一分钟执行一次:

    执行时间: */1 * * * *

    脚本路径:  /java/startup/8080.sh

    不输出任何终端信息:  /dev/null 2>&1

    按“ :” ,wq保存退出即可。

     

    脚本下载地址:https://download.csdn.net/download/xiaochende02/11347562


     

    展开全文
  • Tomcat进程守护

    2009-08-21 16:45:21
    此小程序专门用来守护Tomcat进程 【运行方法】 直接双击TomcatWatcher.jar 程序通过访问http://localhost和输入的Tomcat端口来访问Tomcat主页,如果获取到返回串证明Tomcat运行中,否则检测JAVA.EXE进程是否存在。...
  • 很多时候我们直接使用...方法一:强制关闭tomcat进程 1、在tomcat/bin/shutdown.sh文件中增加一个参数 原来的 exec "$PRGDIR"/"$EXECUTABLE" stop "$@" 增加参数后 exec "$PRGDIR"/"$EXECUTABLE" stop -force "...
  • 守护进程监控tomcat自动重启

    万次阅读 2014-05-20 10:15:35
    昨天的tomcat问题,一天挂了3,4回,受不了了决定写个监控tomcat进程并zidongchongqi
  • # func:自动监控tomcat脚本并且执行重启操作 # 定义环境变量 export JAVA_HOME=/home/***/java/jdk1.8.0_101 export JRE_HOME=/home/***/java/jdk1.8.0_101/jre export PATH=$JAVA_HOME/bin:$PATH # DEFINE #tomcat...
  • pid=$(ps -ef | grep tomcat-8.5.42 | grep -v grep | awk '{print $2}') echo "pid=:${pid}" read -p "confirm shutdown tomcat and remove cqsg directory (y/n): " confirmed if [ "${confirmed}" == "y" ] || [ ...
  • tomcat自动关闭原因

    2013-04-09 20:30:20
    tomcat自动关闭原因
  • jvm crash 最近公司服务器上面出现了这样的情况,java进程突然自己关闭。服务器使用的java容器是tomcat。查看tomcat日志catalina.out显示的错误报告为:# A fatal error has been detected by the Java Runtime ...
  • tomcat进程无故停止排查思路 排查 1.grep “kill” /var/log/message 查看是不是系统内存不足自动kill的 改进方法 : (1) 加大内存 (2)tomcat进程加入受包含进程 (3)修改进程优先级 2. 确认是不是直接...
  • rm -rf /usr/java/apache-tomcat-mt/webapps/ROOT/WEB-INF/classes/cc #删除lib文件夹的core的jar包 rm -f /usr/java/apache-tomcat-mt/webapps/ROOT/WEB-INF/lib/rsys_core-1.0.jar #复制CC文件夹 c...
  • winserver jenkins启动tomcat进程被杀死 jenkins在构建完成之后,会杀死相关的子进程,也就是说maven自动构建完,开启tomcat后断开连接的时候,会连带着把tomcat的进程杀死。在Linux上sh加参数DONTKILLME即可,win上...
  • 服务器监控tomcat进程

    2018-10-23 15:54:43
    由于服务器的服务经常被停,现增加定时任务脚本实现服务停后自动启动 1、在编写脚本时在linux环境下写,在windows环境不可用 #!/bin/bash #tomcat启动脚本 tomcat10001startup=/app/appdev/apache-tomcat-6.0.45/bin...
  • 服务器上tomcat进程突然终止问题排查 1)检查是否shell进程终止导致tomcat终止(排除) 由于使用./catalina.sh start启动tomcat,启动后tomcat的父PID为1,因此不会由于shell断开而终止 2)tomcat进程是否被kill...
  • 一、出现原因 前些天测试部提出了一个bug,大概意思是说:每次调用tomcat的shutdown.sh时,...1.将调用的应用线程改为守护线程,tomcat容器关闭时,线程自动关闭 //在创建的线程的时候将线程转化为守护线程 th...
  • tomcat自动关闭了。

    千次阅读 2018-10-13 10:15:00
    最近发现tomcat老是自动关闭,开始也发现了,不过没放在心上,直到今天,请求一提交到服务器,tomcat就死了 错误排查 tomcat自动关闭的原因很多,不一定是内存溢出,网上查到原因:1.并发用户数目过大,也会导致...
  • linux定时自动重启TOMCAT,SHELL脚本, 按制定时间启动脚本,并自动查找TOMCAT进程关闭TOMCAT进程,然后再启动TOMCAT进程,服务器压力过大,或遭受攻击时,TOMCAT集群时自动维护出问题的TOMCAT。
  • Linux下tomcat进程莫名消失

    千次阅读 2019-05-14 11:25:51
    参考Linux进程被杀掉(OOM killer)查看系统日志 JAVA进程诡异消失oom killer干的 查看/var/log/messages文件可以看到如下信息,发现java进程被操作系统kill。oom killer是linux系统的一个保护进程,当linux系统所...
  • 在工作中遇到了Tomcat自动关闭的问题,百思不得其解。之后通过阅读http://hongjiang.info/why-kill-2-cannot-stop-tomcat/,找到了问题原因,因此记录一下 --------------------------------------------------...
  • 移动到apache-tomcat-7.*.* -&gt; bin目录下执行命令 service.bat install "...进去“服务类型”选自动,即可开机自动启动 3.关闭服务 移动到apache-tomcat-7.*.* -&gt; bin目录下执行命令 servi...
  • ``` ping /n 60 127.1>null C:\apache-tomcat-8.5.38\bin\startup.bat ```
  • **最近发现tomcat老是自动关闭,开始也发现了,不过没放在心上,直到今天,请求一提交到服务器,tomcat就死了** ## 错误排查 tomcat自动关闭的原因很多,不一定是内存溢出,网上查到原因: 1.并发用户数目过大,也会...
  • 例:tomcat路径及名称为/data/tomcat/ vim /data/tomcat/bin/catalina.sh 找到org.apache.catalina.startup.Bootstrap "$@" stop这行,然后在这行下面加上 if [ $? -eq 0 ];then kill -9 `ps -ef |grep tomcat |...
  • 背景: binary tar 包的 tomcat 需要一个守护进程完成开机自启,以及服务意外退出的守护启动。 解决思路 supervisord 和 systemd 对比 比对了 supervisor 和 systemd,自动重启部分 systemd 更加满足日常运维的...
  • Crontab简介 crontab命令常见于Unix和Linux的操作系统之...通常,crontab储存的指令被守护进程激活。crond 常常在后台运行,每一分钟检查是否有预定的作业需要执行 一、安装 yum -y install vixie-cron yum -y
  • 控制面板-> 管理工具 -> 服务(右键 -> 以管理员身份运行),找到Apache Tomcat,设置为手动(自动
  • centos的tomcat进程杀死

    2017-02-12 20:02:00
    执行ps -ef |grep tomcat 输出如下sun 5144 1 0 10:21 pts/1 00:00:06 /java/jdk/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/java/tomcat/common/endorsed...
  • 前面说到,出现第一行报错的情况肯定是哪里发出了shutdown信号,才导致中止tomcat进程动作,那么如果排除了所有当前系统服务器的问题之后,也有可能是例如Jenkins等持续集成的自动化工具配置了相关操作命令,发出...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,884
精华内容 12,353
关键字:

tomcat进程自动关闭