错误一:
Linux下Tomcat启动报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
原因:可能是Linux环境变了,需要在catalina.sh文件里指定JDK路径
解决方式:
在/bin/catalina.sh配置文件中加入下面两行代码
export JAVA_HOME=/home/wzdinfo/jdk1.8.0_121(JDK安装在Linux的路径)
export JRE_HOME=/home/wzdinfo/jdk1.8.0_121/jre
保存退出,重启Tomcat即可
错误二:
Linux下Tomcat报错:java.lang.OutOfMemoryError: unable to create new native thread
原因:Java运行内存不够
解决方式:
在/bin/catalina.sh配置文件中加入下面一行代码
JAVA_OPTS=“-server -Xms2048m -Xmx2048m -XX:PermSize=256M -XX:MaxPermSize=512m”
保存退出,重启Tomcat即可
错误三:
Linux下Tomcat报错:java.lang.OutOfMemoryError: Java heap space
Java heap space,Java应用程序创建的对象存放在这片区域,垃圾回收(Garbage Collection)也发生在这块区域。通常一些比较“重型”的操作可能会导致该异常,比如:需要创建大量的对象,层次比较深的递归操作等。
解决方案有两种,一是优化应用,找到消耗大量内存的地方,然后优化代码或者算法。这种方式比较推荐,但是难度比较大,尤其是在产品环境中出现这种问题,开发人员不能很好的重现问题。第二种方案是提升Java heap size,这种方式虽然感觉有点治标不治本,但是可行性非常高,操作简单。
对于一般的应用,采用如下方式即可(数字根据自己的需要调整),解决办法:
“JVM 堆空间溢出(java.lang.OutOfMemoryError: Java heap space)”错误是JVM 堆空间不足,此时只需要调整-Xms 和-Xmx 这两个参数即可。
在/bin/catalina.sh配置文件中的cygwin=false前面加入下面一行代码
JAVA_OPTS=“-server -Xms2048m -Xmx2048m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m”
可以参考以下配置
服务器内存8G ,所以可以采取以下配置:
JAVA_OPTS=-server -Xms4096m -Xmx4096m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m
服务器内存4G ,所以可以采取以下配置:
JAVA_OPTS=-server -Xms2048m -Xmx2048m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m
服务器内存2G ,所以可以采取以下配置:
JAVA_OPTS=-server -Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m -XX:MaxPermSize=512m
服务器内存1G ,所以可以采取以下配置:
JAVA_OPTS=-server -Xms512m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M -XX:MaxPermSize=256m
服务器内存512M ,所以可以采取以下配置:
JAVA_OPTS=-server -Xms256m -Xmx256m -XX:PermSize=256M -XX:MaxNewSize=128m -XX:MaxPermSize=128m
Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数。
JAVA_OPTS参数说明
-server 启用jdk 的 server 版;
-Xms java虚拟机初始化时的最小内存;
-Xmx java虚拟机可使用的最大内存;
-XX:PermSize 内存永久保留区域
-XX:MaxPermSize 内存最大永久保留区域
保存退出,重启Tomcat即可
错误四:
Linux下Tomcat报错:org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
导致此异常的可能因素:
客户端意外关闭连接: 客户端在与服务器建立连接后,突然出现异常或关闭连接,但服务器端还在尝试往已关闭的连接中写数据,就会导致"Broken pipe"异常。
写入数据过大: 在向客户端写数据时,如果一次性写入的数据量过大,超出了系统的缓冲区大小,可能会触发"Broken pipe"异常。
网络异常: 网络环境不稳定或发生异常时,也有可能导致连接断开,从而引起"Broken pipe"异常。
连接超时: 如果连接超时时间设置过短,在连接空闲一段时间后服务器端尝试向客户端写数据时,可能会发生"Broken pipe"异常。
解决方案:
设置合理的链接请求超时时间,在代码中捕获异常并处理返回客户端
(未完待续)