网站对服务器要求,保定 网站建设软件开发,公司变更地址流程,免费开网店的平台有哪些QUESTION#xff1a;服务器上的Linux中Tomcat有时会挂掉的问题及方法? 目录
QUESTION#xff1a;服务器上的Linux中Tomcat有时会挂掉的问题及方法?
ANSWER:
一、内存不足
二、服务器内存不足
三、解决方法
3.1Tomcat内存优化
3.2代码优化内存泄漏 ANSWER: 正在启动的…QUESTION服务器上的Linux中Tomcat有时会挂掉的问题及方法? 目录
QUESTION服务器上的Linux中Tomcat有时会挂掉的问题及方法?
ANSWER:
一、内存不足
二、服务器内存不足
三、解决方法
3.1Tomcat内存优化
3.2代码优化内存泄漏 ANSWER: 正在启动的tomcat服务器突然间挂掉有时运行的好好的分析了以下原因
一、内存不足 本博主是在阿里云购买的云服务器2G运行内存开启了apache、tomcat服务器剩余内存不足。
在开发当中当一个项目比较大时依赖的jar包通常比较多我们都知道在应用服务器启动时会将应用引用到的所有类通过ClassLoader依次全部加载到内存当中。Java的逻辑内存模型大致分为堆内存、栈内存、静态内存区也称持久区该区的内存不会被GC回收。堆内存用于存储类的实例、数组等引用类型数据也就是用new生成的对象都存放在这里栈内存存储局部变量如方法参数静态内存区存储常量、静态变量、类元数据信息方法、属性等。开发当中常遇到的三类内存溢出异常
java.lang.OutOfMemoryError: Java heap space异常 表示堆内存空间满了如果不是程序逻辑的bug可能是因为项目中引用的jar比较多导到内存溢出。JVM默认堆的最小使用内存为物理内存的1/64最大使用内存为物理内存的1/4如8G的物理内存JVM默认堆的最小和最大内存分别为128m和2048m。通过调整JVM的-Xms初始内存和-Xmx最大内存两个参数加大内存使用限制。java.lang.OutOfMemoryError: PermGen space异常 表示静态内存区满了通常是由于加载的类过多导致。jdk8以下版本通过修改JVM的-XX:PermSize和-XX:MaxPermSize两个参数限制静态区最小和最大内存范围。jdk8改变了内存模型将类定义存放到了元数据MetaspaceSize空间而元数据空间是与堆空间共享同一块内存区域的所以在JDK8以后版本不会存在PermGen space异常了故不用设置此参数。java.lang.StackOverflowError异常 表示栈内存溢出。通常是由于死循环、无限递归导致。
系统会检测内存如果内存占用过大会自动清理进程。 二、服务器内存不足
主要配置Tomcat能处理的请求数当一个进程的线程数超过500个的话那么这个进程的运行效率就很低了。表面上看线程越多处理的请求越多其实过多的线程会占用CPU在不同线程之间切换的资源导致CPU在每个线程上处理的时间片极期有限反而会降低服务器的响应性能。 三、解决方法
执行以下代码
vim /var/log/messages 出现如图所示就说明内存机制自动清除tomcat进程。内存不足产生溢出。 查看被kill的进程
grep Kill /var/log/message*3.1Tomcat内存优化 修改Tomcat的内存配置打开$TOMCAT_HOME/bin/catalina.sh文件Windows系统是catalina.bat文件大楖在250行左右在JAVA_OPTS参数上添加内存参数设置即可。完整的JVM参数设置如下所示
JAVA_OPTS$JAVA_OPTS -server -Xms2048m -Xmx2048m -XX:PermSize128m -XX:MaxPermSize256 -Djava.awt.headlesstrue
-server参数表示以服务模式启动启动速度会稍微慢一点但性能会高很多。不加这个参数默认是以客户端模式启动。
-Xms–Xmx JVM内存设置建议设置成同一个值可以在命令行中使用 java -Xmx1500m -version 来测试当前服务器可以设置的最大内存。-Xmx 的值太大时JVM 无法启动。
-Xmn 年轻代 整个堆大小年轻代大小 年老代大小 持久代大小。持久代一般固定大小为64m。
-Xss 是指设定每个线程的堆栈大小。一般不超过 1M。 3.2代码优化内存泄漏
通常是ThreadLocal方法出现内存泄漏优化自己的功能。