tomcat 应用多个项目碰到的问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

tomcat 应用多个项目碰到的问题

落地花开啦 2016-05-27 11:04:04 1185

我们的项目需要对某些war包进行热部署,开始的时候部署个1,2个进去没有什么问题,现在到系统测试了,一次扔进去10个8个的tomcat就挂掉了,查了很多资料说是要改tomcat所占内存大小,就算我把2G内存都给了他也不能解决根本问题啊,我们项目起来以后可能会有上百个这个的war包需要热部署进去,而且被部署的项目服务器不关是不能删除的,这样webapps下会有越来越多的项目,是不是当初设计的时候就不应该用tomcat?有这方面的经验的高手指点下,这问题能解决吗,还是必须要换一个服务器?
`java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)`
这个异常是我在正常启动tomcat的时候报的(部署了25个项目)
删除几个项目后启动又报:
`java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1819)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1327)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206)`
有这方面的经验的高手指点下,这问题能解决吗,还是必须要换一个服务器?

应用服务中间件 测试技术
分享到
取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 19:17:23

    加内存或者升级JDK, 好像jdk7 的 permGen 可以回收了
    permgen 内存大小是可以设置的,这块内存区域一般理解为加载应用、应用服务器的jar包之类,如果应用jar包太多,多次热部署这个区域就会溢出。所以可以适当把permgen值调大一些。
    最好根据应用运行之后的实际内存要求设置下jvm 的 heap 大小。

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题