tomcat无法启动的问题 -Xss太小

线上的tomcat  无法启动,一直停留在:

Jun 22, 2016 4:12:01 PM org.apache.catalina.core.ApplicationContext log

INFO: No Spring WebApplicationInitializer types detected on classpath

Jun 22, 2016 4:12:02 PM org.apache.catalina.core.ApplicationContext log

INFO: Initializing Spring root WebApplicationContext

Jun 22, 2016 4:24:19 PM org.apache.catalina.core.ApplicationContext log

INFO: No Spring WebApplicationInitializer types detected on classpath

Jun 22, 2016 4:24:19 PM org.apache.catalina.core.ApplicationContext log

INFO: Initializing Spring root WebApplicationContext

没有日志输出,应该是出现这个应该出在tomcat上,跟应用无关; 在运维的同事的支持下, 发现 tomcat启动参数:

 -Xmx8192m -Xms8192m -Xmn4g -Xss256k 

 -Xmx:最大堆大小

 -Xms:初始堆大小
 -Xss: 单线程的堆大小(这个值的设置会影响到应用能够支持的线程数量)

后来把 这个

-Xss512k

线上的tomcat  可以正常启动;在这里感谢运维同事的辛勤劳动……

附上: 常用查错误的常用命令:

jmap (生成堆转储快照(heapdump))                                                                                                    

常用指令                                                                                                                        

jmap -heap 3331:查看java 堆(heap)使用情况                                                                                    

jmap -histo 3331:查看堆内存(histogram)中的对象数量及大小                                                                     

jmap -histo:live 3331:JVM会先触发gc,然后再统计信息           

jmap -dump:format=b,file=heapDump 3331:将内存使用的详细情况输出到文件,之后一般使用其他工具进行分析。                                                                                                                              

详细介绍                                                                                                                        

jhat (一般与jmap搭配使用,用来分析jmap生成的堆转储文件)        

由于有很多可视化工具(Eclipse Memory Analyzer 、IBM HeapAnalyzer)可以替代,所以很少用。不过在没有可视化工具的机器上也是可用的。

常用指令                                                                                                                        

jmap -dump:format=b,file=heapDump 3331 + jhat heapDump:解析Java堆转储文件,并启动一个 web server                                

详细介绍                                                                                                                        

jstack(生成当前时刻的线程快照)

常用指令                                                                                                                        

jstack 3331:查看线程情况                                                                                                       

jstack -F 3331:正常输出不被响应时,使用该指令                                                                                  

jstack -l 3331:除堆栈外,显示关于锁的附件信息                                                                                  

详细介绍                                                                                                                        

常见问题定位过程                                                                                                                

1) 频繁GC问题或内存溢出问题                                                                                                        

一、使用jps查看线程ID 

二、使用jstat -gc 3331 250 20 查看gc情况,一般比较关注PERM区的情况,查看GC的增长情况.

三、使用jstat -gccause:额外输出上次GC原因  

四、使用jmap -dump:format=b,file=heapDump 3331生成堆转储文件 

五、使用jhat或者可视化工具(Eclipse Memory Analyzer 、IBM HeapAnalyzer)分析堆情况。

六、结合代码解决内存溢出或泄露问题.

2) 死锁问题                                                                                                                        

一、使用jps查看线程ID                                                                                                           

二、使用jstack 3331:查看线程情况                                                                                               

猜你喜欢

转载自zuo-huai.iteye.com/blog/2306929