Tomcat内存溢出

常见的溢出异常及导致原因

  • OutOfMemoryError:Java heap space 异常,通常是堆内存满了,堆内存默认使用最大是系统的4分之1,最小64分之1
  • OutOfMemoryError:PermGen space 异常,通常是静态内存区满了,Jdk8以上没了
  • StackOverflowError异常,通常栈内存满了,通常是死循环,递归导致

内存配置

修改编辑tomcat的Bin文件夹中catalina文件,服务器是Windows就修改.bat的,是Linux就修改.sh在第二行加入,Windows的去掉前面的set

set JAVA_OPTS="-server -Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"

修改默认8005端口

修改编辑tomcat中conf文件夹中server.xml配置文件,把如图中的端口号或SHUTDOWN 至于为什么修改这个,这是一个安全配置项,默认的情况下,如果知道远程tomcat服务器的IP,可以在本地通过telnet命令直接把远程tomcat关掉,亲测很恐怖。

修改/隐藏版本号

修改或者隐藏版本号,可以避免针对版本攻击风险 修改tomcat的lib文件夹下的catalina.jar包,右键选择使用压缩工具打开,修改如图位置

修改禁用管理页面

将tomcat-webapps-ROOT文件夹重命名其它名字,然后新建一个空的ROOT文件夹,tomcat默认ip:port访问的地址就是ROOT文件夹

自定义错误页

新建一个错误的html页面,放到空的ROOT文件夹中,然后修改conf文件夹中的web.xml配置文件在最下面加入以下代码,其中error.html是你自定义的需要显示的错误页面

  <!-- 错误页 -->
<error-page>
<error-code>400</error-code>
<location>/error.html</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error.html</location>
</error-page>

启用Cookie的HttpOnly

启用Cookie的HttpOnly,js脚本就无法获取到Cookie信息,防止Xss-跨站脚本攻击 修改tomcat的conf文件夹下的context.xml文件,在如图位置添加:useHttpOnly=”true”