精华内容
下载资源
问答
  • 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进程就挂掉了...

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

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

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

    应用跑一段时间,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那些事儿,发现更多精彩文章!了解各种常见问题背后的原理与答案。深入源码,分析细节,内容原创,欢迎关注。

    展开全文
  • 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进程无故停止排查解决方案

    千次阅读 2019-11-12 20:50:20
    tomcat进程无故停止排查思路 排查 1.grep “kill” /var/log/message 查看是不是系统内存不足自动kill的 改进方法 : (1) 加大内存 (2)tomcat进程加入受包含进程 (3)修改进程优先级 2. 确认是不是直接...

    tomcat进程无故停止排查思路


    排查
    1.grep “kill” /var/log/message
    查看是不是系统内存不足自动kill的

    改进方法 :
    (1) 加大内存
    (2)tomcat进程加入受保护进程
    (3)修改进程优先级
    2. 确认是不是直接关闭ssh窗口后导致tomcat也退出
    改进方法:
    (1)执行启动脚本后,ctrl+C退出
    (2)修改启动脚本,命令第一行添加set -m 命令(启动监听)

    展开全文
  • Linux服务器上的Tomcat进程频繁被杀一.查看系统日志二.确定问题三.附带情况四.总结 一.查看系统日志 目前服务器上的Tomcat服务经常出现宕机的情况,想通过查看系统日志/var/log/messages来确定问题,但是系统日志没有...
  • 写一个脚本,自动启动Tomcat>中提到Tomcat会无缘无故退出,而且在日志中找不到原因.后来终于知道为什么了: 由于内存不足,被OOM Killer杀死的!由于是直接被系统进程杀死,所以它自己没有机会留下任何日志. 这是我...
  • tomcat异常关闭自动重启批处理脚本 word文档说明
  • 例: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 |...
  • 如何保证服务一直运行?如何保证即使服务挂掉了也能自动重启?在写服务程序时经常会碰到这样的问题。在Linux系统中,强大的shell就可以很灵活的处理这样的事务
  • 前奏: 最近在Linux部署tomcat应用的时候发现停止tomcat后,自己的进程还在,必须要用kill命令强行杀掉进程,每次这样做感觉很不妥,所以现在我来找一下出现这个问题的根本原因并给出解决方案。背景:有一天我发现公司...
  • ``` ping /n 60 127.1>null C:\apache-tomcat-8.5.38\bin\startup.bat ```
  • 在linux上部署的时候,有时候程序异常了,会导致jar或者tomcat进程自定关闭了,这时候想要它自动重启怎么办。 1.启动jar的shell脚本 #!/bin/bash #判断查看进程中8080端口是否存在 if [ "$(netstat -tlnp|grep ...
  • 程序代码里含有System.exit()等方法退出jvm,导致发起shutdown信号,tomcat进程关闭,进而导致内存泄露。 程序开发时,对于数据源的操作,只open没有close,当访问量级上来的时候,就会导致内存溢出。尤其是...
  • 原文链接地址:Tomcat进程意外退出的问题分析 感谢同事宏江投递本稿。 节前某个部门的测试环境反馈tomcat会意外退出,我们到实际环境排查后发现不是jvm crash,日志里有进程销毁的记录,从pause到destory的整个过程...
  • 在UNIX/LINUX中,普通进程用&符号放到后台运行,如果启动该程序的控制台logout,则该进程随即终止。 要实现守护进程,一种方法是按守护进程的规则去编程;另一种方法是仍然用普通方法编程,然后用nohup命令启动...
  • 在工作中遇到了Tomcat自动关闭的问题,百思不得其解。之后通过阅读http://hongjiang.info/why-kill-2-cannot-stop-tomcat/,找到了问题原因,因此记录一下 --------------------------------------------------...
  • 1.docker restart **** 尝试设置容器自动重启 未解决…
  • 最近我们在使用Jenkins自动化部署项目时,在生产liunx环境下,使用脚本shutdown.sh停止tomcat服务,然后再start之后发现应用无法访问了,后台查看tomcat进程是发现有个2个tomcat进程,说明之前的shutdown并没有完全...
  • 1.需要将tomcat加入系统服务.安装版的不需要考虑.如果是解压版的可以修改tomcat/bin/service.bat下的set SERVICE_NAME=tomcat7REM 上面一行,Tomcat7修改成你需要的服务名,这个将是一后使用net start/stop来操作的...
  • 问题定位及排查上周无意中调试...后来测试在一次升级后反馈说怎么现在tomcat进程无法shutdown?这让我有点意外,看来这个问题并没有这么简单。于是开始思考问题会出在哪里。复现问题先是另外一台服务器部署,然后shut
  • tomcat停止了,只是停止了容器,可能还有java线程没停止,导致tomcat进程还在 拿到tomcat进程pid ps -ef|grep tomcat 得到pid31057 查看java进程,到底后台还在执行什么 jstack -F 31057 >> run.log ...
  • TOMCAT关闭自动重启方法总结

    千次阅读 2017-11-28 20:01:22
    1.Java方法:CheckTomcat .java import java.io.BufferedReader; import java.io.FileReader; import java.net.URL; import java.net.URLConnection; import java.util.Date; public class Check...
  • tomcat自动关闭了。

    千次阅读 2018-10-13 10:15:00
    最近发现tomcat老是自动关闭,开始也发现了,不过没放在心上,直到今天,请求一提交到服务器,tomcat就死了 错误排查 tomcat自动关闭的原因很多,不一定是内存溢出,网上查到原因:1.并发用户数目过大,也会导致...
  • 1、首先通过MobaXterm或者其他工具远程连接到服务器 2、进入到jar存放的文件夹下面,使用...如果想直接看到服务输出日志,并且在关闭命令界面后自动关闭服务的话,可以使用以下命令,该方式也可以通过ctrl+c断开服务
  • 1.shell方式启动 如dockerfile中定义 ...退出机制可能大不相同 **背景:**docker stop的时候,会向PID为1的进程发送SIGTERM信号,通知进程关闭。如果10秒钟依然没有关闭,将会发送SIGKILL强制kill进程。 不同之处: 1
  • 问题:tomcat在运行过程中会莫名挂掉,表现如被Killed -9,系统中没有任何日志(命令行无Kill指令记录、/var/log/message中无OOM Killer日志、项目本地目录无core dump日志、无java crash日志、应用中记录了eixt操作...
  • 最近的检验系统上线一段时间后,发现系统访问不了,tomcat总是会自动崩掉,一般遇到这种问题,程序员的第一...看看tomcat崩溃的时候,tomcat进程使用内存是否明显占用较多。二、查看tomcat日志catalina.201X-XX-XX....
  • 最近遇到部署在服务器的tomcat总是过一段时间就自动结束进程 ; 通过监控tomcat 日志文件(tail -f ./logs/catalina.out)并没有发现有任何异常 分析解决 通过网络搜索是因为可能是由于Linux OOM Killer导致 监控/...
  • Linux下部署tomcat+mysql服务器 第一次在Linux服务器上部署项目,把我部署的过程和其中遇到的坑记录下来。 Linux下部署tomcatmysql服务器 准备 vpn创建连接Linux服务器连接工具XShellWinSCP文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,092
精华内容 8,036
关键字:

tomcat进程自动退出