我正在使用Hibernate和Tomcat JDBC连接池来使用我的MySQL数据库
当由于任何原因,数据库崩溃时,我的应用程序卡住了。
例如,我有REST资源(使用Jersey),他们没有得到任何请求
我也使用石英作为计划任务,它们也没有运行。
当我再次启动数据库时,一切都恢复正常
我甚至不知道从哪里开始看,有人有想法吗?
感谢
答案 0 :(得分:0)
必须发生的是您的应用程序必须接收请求,但在建立数据库连接时必须有一些异常。查看日志。
尝试一些您没有进行任何数据库操作的流程。它必须正常工作。
答案 1 :(得分:0)
当应用程序挂起时,获取JVM的线程转储,这将告诉你每个线程的状态,而不是猜测原因,你将有具体的证据。
话虽如此,并且采用猜测工作方法,很多事情都归结为连接池的配置方式以及代码在收到SQLException时所采取的操作。如果应用程序完全挂起,那么我的第一个调用端口是查明db访问线程是否处于WAIT状态,甚至死锁。线程转储将帮助您确定是否是这种情况。
请参阅kill -3 to get java thread dump了解如何进行线程转储