对于Tomcat的处理耗时较长的问题主要有当时的并发量、session数、内存及内存的回收等几个方面造成的。出现问题之后就要进行分析了。
1.关于Tomcat的session数目
这个可以直接从Tomcat的web管理界面去查看即可
或者借助于第三方工具Lambda Probe来查看,它相对于Tomcat自带的管理稍微多了点功能,但也不多
2.监视Tomcat的内存使用情况
使用JDK自带的jconsole可以比较明了的看到内存的使用情况,线程的状态,当前加载的类的总量等
JDK自带的jvisualvm可以下载插件(如GC等),可以查看更丰富的信息。如果是分析本地的Tomcat的话,还可以进行内存抽样等,检查每个类的使用情况
3.打印类的加载情况及对象的回收情况
这个可以通过配置JVM的启动参数,打印这些信息(到屏幕(默认也会到catalina.log中)或者文件),具体参数如下:
-XX:+PrintGC:输出形式:[GC 118250K->113543K(130112K), 0.0094143 secs] [Full GC 121376K->10414K(130112K), 0.0650971 secs]
-XX:+PrintGCDetails:输出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs] [GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]
-XX:+PrintGCTimeStamps -XX:+PrintGC:PrintGCTimeStamps可与上面两个混合使用,输出形式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]
-XX:+PrintGCApplicationConcurrentTime:打印每次垃圾回收前,程序未中断的执行时间。可与上面混合使用。输出形式:Application time: 0.5291524 seconds
-XX:+PrintGCApplicationStoppedTime:打印垃圾回收期间程序暂停的时间。可与上面混合使用。输出形式:Total time for which application threads were stopped: 0.0468229 seconds
-XX:PrintHeapAtGC: 打印GC前后的详细堆栈信息
-Xloggc:filename:与上面几个配合使用,把相关日志信息记录到文件以便分析
-verbose:class 监视加载的类的情况
-verbose:gc 在虚拟机发生内存回收时在输出设备显示信息
-verbose:jni 输出native方法调用的相关情况,一般用于诊断jni调用错误信息
4.添加JMS远程监控
对于部署在局域网内其它机器上的Tomcat,可以打开JMX监控端口,局域网其它机器就可以通过这个端口查看一些常用的参数(但一些比较复杂的功能不支持),同样是在JVM启动参数中配置即可,配置如下:
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=192.168.71.38 设置JVM的JMS监控监听的IP地址,主要是为了防止错误的监听成127.0.0.1这个内网地址
-Dcom.sun.management.jmxremote.port=1090 设置JVM的JMS监控的端口
-Dcom.sun.management.jmxremote.ssl=false 设置JVM的JMS监控不实用SSL
-Dcom.sun.management.jmxremote.authenticate=false 设置JVM的JMS监控不需要认证
5.专业点的分析工具有
IBM ISA,JProfiler等,具体监控及分析方式去网上搜索即可。
分享到:
相关推荐
- 如何通过日志分析、JMX监控、JProfiler等工具定位和解决问题,以及性能瓶颈的识别和调优。 9. 高级主题 - 理解AJP协议,以及与Apache HTTP Server或其他反向代理服务器的集成。 - 深入理解Classloading机制,...
VisualVM还支持分析内存快照和线程快照,帮助开发者定位内存泄漏和死锁问题。 总的来说,JConsole和VisualVM都是强大的JVM监控工具,它们提供了丰富的功能来协助开发者进行性能优化。JConsole简洁易用,适合日常的...
- **内存泄漏检测**:通过工具如VisualVM、JProfiler等检测并定位内存泄漏问题,确保程序运行的稳定性和高效性。 - **JVM性能瓶颈**:识别并解决JVM层面的性能瓶颈,如内存溢出、垃圾回收效率低下等问题。 - **实例...
3. **日志文件分析**:通过查看Tomcat的日志文件,如catalina.out等,可以定位到部署过程中出现的问题。 **知识点6:优化建议** 1. **资源优化**:合理设置JVM参数,避免内存溢出等问题。 2. **性能调优**:通过...
【服务器资源】——深入解析Tomcat 在IT行业中,服务器资源是支撑应用程序运行的重要基础设施,而Tomcat作为一款广泛使用的轻量级应用服务器,尤其在处理Java Servlet和JSP(JavaServer Pages)方面表现出色。本篇...
- **故障排除**:常见问题及解决方法,帮助用户快速定位并解决问题。 - **附录**:提供了额外的技术参考资料和技术支持联系方式等信息。 #### 三、可视化服务的重要性 **Windchill可视化服务**是Windchill平台的...
开发者应学会使用JUnit、Mockito等工具对各个层进行测试,同时利用日志和调试工具进行问题定位。 9. **持续集成与部署**:在项目开发过程中,持续集成工具如Jenkins可以帮助自动化构建和测试,确保代码质量。部署时...
6. **日志配置**:合理设置日志级别,例如使用debug日志定位配置错误,error日志记录严重问题。 7. **安装位置**:确保将Nginx安装到正确的路径下,并且能够在系统启动时自动运行。 8. **日志管理**:例如通过定期...
- **类与对象**:掌握面向对象编程的三大特性——封装、继承和多态。 - **异常处理**:熟悉try-catch-finally语句,理解和使用自定义异常。 - **集合框架**:理解ArrayList、LinkedList、HashMap、HashSet等容器...