这是我第一次问关于Stack Overflow的问题。我最近配置了一个Ubuntu 16.04虚拟专用服务器来托管一个web应用程序。我在Tomcat服务器上运行ngnix,该服务器对MySQL数据库进行读写。这个应用程序运行得很好,只是Tomcat偶尔会重新启动一次,这会导致500错误,这是由于任何人试图登录(即连接到数据库)时出现的“管道断开”。我会在下一次发布500的图片。我进入我的vps并查看了我的Tomcat重启消息。这就是我看到的: Tomcat status message.
我还深入研究了Tomcat日志,这是一个对应于该重新启动时间的日志文件: Tomcat log file
我自己做了一些研究,试图解决这个问题,但没有成功。我认为exit=143是被另一个程序或系统本身终止的进程。我还对mysql-connector-java.jar进行了一些移动。我读到它应该位于Tomcat/lib目录中,而不是web应用程序的WEB-INF中。也许我需要配置其他设置。
任何帮助或任何方向都将不胜感激。我与这个问题斗争了一周,学到了很多,但收获很少。
谢谢
发布于 2016-10-21 02:39:24
看看时间线。它从Tomcat日志中的19:49:23.766
开始,并显示以下消息:
通过关闭端口接收到有效的关闭命令。正在停止服务器实例。
退出代码143是关机的结果,没有任何指示。
您需要回答问题是:谁发送了关闭命令,为什么发送
注意:前面的消息表明Tomcat失去了与数据库的连接,并且您没有配置验证查询。您应该始终对其进行配置,因为连接池中的数据库连接将变得陈旧,需要对其进行检测。
理论:你有没有运行一些监控服务来测试你的应用程序正在运行?该监控是否会检测到超时的数据库连接,将其分类为挂起的webapp并自动重新启动Tomcat?
发布于 2016-10-21 02:47:03
虽然我不认为我能够看到您的整体设置问题的核心,因为您的日志文件摘录很小,但有一件事引人注目。在Tomcat日志中,有一行
A valid shutdown command was received via the shutdown port. Stopping the server instance.
这就解释了服务器重启的原因。某些人(一些外部进程、恶意攻击者、脚本或其他。可以是任何东西,这取决于服务器的设置)向Tomcat的关闭端口(默认情况下是8005)发送一个关闭命令,从而使Tomcat关闭。
请参阅OWASP's recommendations for securing a Tomcat server instance以修复此可能的安全整体。
关于您表面上的Hibernate问题,我没有从您的日志中获得足够的信息来做出有用的声明。但是您可以将MySQL jar放在Tomcat/lib中,因为这不是问题的根本原因。
https://stackoverflow.com/questions/40161559
复制相似问题