Java Tomcat自动关闭

Java Tomcat自动关闭,java,apache,tomcat,Java,Apache,Tomcat,我在Windows服务器上使用Apache和Tomcat,从今天早上开始,Tomcat在没有任何日志的情况下停止工作。它没有挂起,只是关闭了。 Tomcat没有登录,CPU/内存被罚款,没有系统。在我的代码中退出 有人有过这个问题吗 5-10分钟后随机发生。应用程序响应正常,有时会发出砰的一声。。停止工作 更新:仍然没有线索。管理团队将在另一个框中安装webapp…调试此类问题时需要注意的事项: 查看日志目录($TOMCAT_ROOT/logs),确保日志文件没有任何堆栈跟踪 查看tomcat

我在Windows服务器上使用Apache和Tomcat,从今天早上开始,Tomcat在没有任何日志的情况下停止工作。它没有挂起,只是关闭了。
Tomcat没有登录,CPU/内存被罚款,没有
系统。在我的代码中退出

有人有过这个问题吗

5-10分钟后随机发生。应用程序响应正常,有时会发出砰的一声。。停止工作


更新:仍然没有线索。管理团队将在另一个框中安装webapp…

调试此类问题时需要注意的事项:

  • 查看日志目录($TOMCAT_ROOT/logs),确保日志文件没有任何堆栈跟踪
  • 查看tomcat启动脚本,检查日志文件的位置,查看日志是否未写入其他目录
  • 另一个原因可能是其他用户/进程可能会发出kill-9,它可以杀死tomcat而不给它任何记录错误的机会

    • 这听起来像是JVM崩溃了。您是否查找过JVM崩溃日志?它的名称通常类似于hs_err_pid*.log,并在JVM的工作目录中创建

      如果你找到一个像这样的文件并上传,那么我们可能会提供更多帮助

      一些问题:

      • 您最近是否更改了正在使用的Java版本
      • 您使用的Tomcat的确切版本是什么
      • 您是否使用Tomcat Native(Apache便携式运行时)

      另一种可能是今天早上在绑定到服务器所需端口的盒子上启动了某个进程。

      是否允许您的servlet或其依赖项调用System.exit()?(不确定在这种意义上Tomcat虚拟机的锁定程度)


      我让开发人员认为可以使用exit(666);检测不可逆矩阵时(这不好,但肯定不是致命的)。啊。也许你的系统中存在类似的问题?

      最近我遇到了这个问题,如果将来有人面临同样的问题,我希望这会有所帮助

      场景:Tomcat在没有任何日志或错误的情况下关闭

      我的问题的根本原因:使用
      TimerTask从任务访问的同步方法

      我有一个singleton类,它有一个基于计时器或用户操作从不同线程访问的同步方法 有时,此方法最多需要几分钟才能完成。当
      TimerTask
      等待这个方法一段时间(我猜定时器超时了/线程被终止了,或者后台发生了什么事情)并且方法上的锁被释放时,tomcat就被终止了

      所以我删除了synchronized关键字和singleton,并为线程安全做了一些代码更改。那么问题就不存在了

      我是如何发现的:我在synchronized方法的第一行中有一条log语句,每次tomcat关闭时,我都会在最后几行中发现这条消息

      问候,,
      Phanindra Kasturi

      我注意到CATALINA_在我的路径中选择了一个较小的JVM大小。因此,没有发现tomcat的崩溃和日志跟踪。服务器在不到2小时内自动关闭


      检查,CATALINA_选项或JAVA_选项——它们可能有jvm设置。要么增加它们,要么注释掉它们并增加交换内存。

      我启动tomcat的脚本的最后一行是
      tail-f catalina.out


      有时我没有终止此脚本,shell然后超时并终止脚本及其所有子进程,包括tomcat。

      本地计算机上的服务启动后停止,如果其他服务或程序未使用某些服务,则某些服务会自动停止。

      我经历了这个问题,我尝试了很多方法来解决这个问题,最后我得到了如下的解决方案

      1)从开始按钮单击运行命令

      2)进入服务。msc然后单击确定,您将获得计算机中的所有服务

      3)选择您的服务,右键单击服务并选择属性

      4)转到登录属性并选择本地系统帐户,然后单击确定


      这会起作用。

      如果其他程序在同一端口上运行,有时会发生这种情况。例如Skype。在启动Tomcat之前关闭该程序。

      最近遇到了这个问题

      场景:Tomcat成功启动,但在1小时后自动关闭,有时这种情况在1天后发生,Tomcat日志中没有任何内容

      问题:实际问题是内存使用率高,没有可用的交换内存

      我是如何找到解决方案的

      如果tomcat没有显示任何日志,那么系统日志中肯定有一些内容,所以我检查了
      /var/log/messages
      ,但由于权限被拒绝,我尝试了
      /var/log/dmesg
      ,得到了这个消息

      “内存不足:杀死进程14606(java)得分106或牺牲子进程”

      在输出中,我注意到交换可用内存0 K。运行
      top
      命令以确认相同。因此,不知何故,内存使用率很高,导致操作系统终止了我的tomcat进程

      花了几个小时终于明白了原因

      ps-ef | greptomcat
      显示有多个tomcat进程为同一个应用程序运行。看起来,早期的tomcat关闭可能没有成功,并且由于某种原因,即使在关闭之后,进程也没有被终止,这导致了高内存使用率

      因此,使用
      kill
      终止所有正在运行的tomcat进程。交换内存被释放


      再次启动tomcat,工作正常。:)

      尝试清理elipse项目,因为您可以尝试添加另一个服务器whic