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

前端之家收集整理的这篇文章主要介绍了java – 如何在Tomcat上部署我的WAR这么长时间?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个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)

猜你在找的Java相关文章