加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何在Tomcat上部署我的WAR这么长时间?

发布时间:2020-12-14 23:49:44 所属栏目:Java 来源:网络整理
导读:我有一个Web应用程序,通常需要花费大量时间在Tomcat上进行部署.我怀疑是某个数据库连接正在等待超时,但这只是一个猜测,我想确定是什么导致了阻塞,所以我可以解决这个问题.任何人都可以建议我可以这样做吗?我应该在加载WAR时查看Tomcat并查找线索吗?如果有,
我有一个Web应用程序,通常需要花费大量时间在Tomcat上进行部署.我怀疑是某个数据库连接正在等待超时,但这只是一个猜测,我想确定是什么导致了阻塞,所以我可以解决这个问题.任何人都可以建议我可以这样做吗?我应该在加载WAR时查看Tomcat并查找线索吗?如果有,那么某个地方的教程对初学者有好处吗?

如果这很重要,我的Web应用程序使用Spring和Hibernate.一位同事告诉我,这可能会导致速度变慢,因为它们非常庞大,以至于某个类加载器正在窒息它需要加载的大量类.

当我停止Tomcat或将WAR热部署到已经运行的Tomcat时,我也看到了这一点:

Jun 1,2012 6:03:33 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/nacem-rest] registered the JDBC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak,the JDBC Driver has been forcibly unregistered.
Jun 1,2012 6:03:34 PM org.apache.catalina.startup.HostConfig deployWAR

也许这是问题的一部分?重新部署我的Web应用程序几乎总是需要重新启动Tomcat,我一直认为上面提到的JDBC驱动程序问题是罪魁祸首,但也许它也与缓慢的启动时间有关?

我对这类事情知之甚少,所以这是一个学习的真正机会.在此先感谢您的帮助.

解决方法

你可以使用一个分析器,但这有点过分.相反,只需在应用程序加载时进行少量线程转储.您可以使用jstack或jvisualvm,网上有大量资源描述如何执行此操作.基本上你需要一个Tomcat的PID(参见:jps).

如果您发现难以分析线程转储 – 将其添加到您的问题中.通常,很容易找到瓶颈.典型问题:

>应用程序尝试从Internet模式中获取某些资源>在CLASSPATH上扫描很多类>过多的GC(以防万一gb日志记录)>内存不足(交换,请参阅iostat / iotop)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读