tomcat 启动报错

1.报错信息为"Unable to complete the scan for annotations for web application [/portal] due to a StackOverflowError",系统在本地能跑起来,但放到服务器跑不起来。

原因1:tomcat的栈内存不够,

解决:

【linux系统】修改配置文件catalina.sh【linux,bin文件夹】文件。

a>找到 #JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`" 这一行;

b>去掉前面的 #;

c>在 $JAVA_OPTS 后面加上 "-Xms4096m -Xmx8192m -Xss256K -XX:PermSize=512m -XX:MaxPermSize=2048m  " 这些内容。

JAVA_OPTS="$JAVA_OPTS -Xms4096m -Xmx8192m -Xss256K -XX:PermSize=512m -XX:MaxPermSize=2048m -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"

【windows系统】修改配置文件catalina.bat【windows,bin文件夹】文件

a>找到 set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG% 这一行;

b>将 %JAVA_OPTS% 换成 "-Xms4096m -Xmx8192m -Xss256K -XX:PermSize=512m -XX:MaxPermSize=2048m 。

其中:

 -server

表示tomcat是运行在生产环境中

因为tomcat默认是以一种叫java –client的模式来运行的,server即意味着你的tomcat是以真实的production的模式在运行的,这也就意味着tomcat以server模式运行时将拥有:更大、更高的并发处理能力,更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量。

 -Xms –Xmx

即JVM内存设置了,Xms是堆最小内存,Xmx是堆最大内存,把Xms与Xmx两个值设成一样是最优的做法,这样可以减少每次垃圾回收后JVM重新分配内在。

因此一开始我们就把这两个设成一样,使得Tomcat在启动时就为最大化参数充分利用系统的效率,这个道理和jdbcconnection pool里的minpool size与maxpool size的需要设成一个数量是一样的原理。

-Xss

每个线程的栈的大小,减少这个值可以生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限制生成。如果程序没有报StackOverFlow,可以设置成128K。

参考:https://blog.csdn.net/a503921892/article/details/39048767

           https://geeksun.iteye.com/blog/1853744

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值