国际惯例,先说症状。
症状:
tomcat上部署了4个工程,共用同一端口,以不同路径区分。
近来发现四个项目无法同时打开,一旦同时打开就会报线程错误。而改为部署3个项目则运行顺畅,不出现问题。
分析原因并解决:
1.之前一直用TomcatXw.exe启动tomcat,即普通窗口方式启动,如下图:
发现没有办法查看启动控制台。后来发现可以运行TomcatX.exe,可以输出控制台信息。
2.控制台信息显示OutOfMemoryError:PermGen Space,永久区错误。采用最基本方式解决:扩大tomcat的MaxPermSize。
上网收到的信息都说改动catalina.sh或者Catalina.bat,甚至有的要改注册表,反而这些文件我一个都找不到。最终发现,以上方法都是针对Tomcat的较早期版本,后期的版本直接在TomcatXw.exe->Java里可以设定。修改maxPermSize后启动Tomcat,可以在任务管理器里明显看到Tomcat所占内存增大。
3.然而不再报PermGen Space错误后,仍然报线程池满的错误。后发现原因是4个项目分别使用不同的lib,加载类过多导致。在网上找到一种切实可行的办法:
1)在tomcat安装根目录下设置share文件夹,将共用jar放入。
2)修改catalina.properties中的“shared.loader=”属性,设为${catalina.base}/share/*.jar,(此处应该要在环境变量设定好 catalina_base为tomcat根目录),重启Tomcat即可。

460

被折叠的 条评论
为什么被折叠?



