[原创] Java大访问下的负载测试分析:jps、jstack

作者: nick 分类: apache, java 发布时间: 2010-08-14 09:28 ė 6没有评论

去年在项目中(Java)碰到大访问量的情况,结果服务器支撑不了,换了Ajp、JK、Weblogic、Nginx均不能彻底解决问题,经过长时间的测试结果发现,瓶颈不在服务器本身,而是出在项目本身,所以就想尽一切办法对应用服务器的消耗进行跟踪,后来发现瓶劲出在数据库(Oracle)上,接着又对Oracle进行了一系列的调优并进行观察,发现Oracle的连接不怎么大时,消耗也依然很惊人,这时就确定问题肯定是出在项目里面的数据库处理上了,而且肯定是出在一些数据库的操作上。

但是问题来了,我该如何知道是哪里的数据库操作出现了问题呢?尽管Oracle和Log4j的日志可以看出一些,但是有些隐藏在进程里面的消耗始终看不到,愁呀!

不过问题肯定是可以解决的,只是我还没有找到解决办法,经过多次地询问、交流,最终得高人指点,了解到JDK本身就有这样的功能,能够迅速分享某个线程的执行效率、时间、详细过程等信息,而且能够跟踪某个Java的进程,真是太好了,通过这种方法,最终找到了所有问题的根源,逐个解决,问题终于得到解决,再次感谢朋友们的指点,现把方法分享出来:

首先运行jps命令,也就是JDK里面的jps.exe找到Tomcat(或其它应用服务器)进程:

可以清晰看出JPS对应的进程ID是692(如果不灵,试试另外两个数字),好,这就是我们想要关注的进程ID,

现在再通过选择jstack命令,也就是JDK里面的jstack.exe,运行此命令后,你会欣喜地发现一些信息:

jstack -l 692

在这里面你会找到你的答案的,祝大家好运,可以使用:jstack -l 692 > c:/jstack.log  来进行日志保存喽!

欢迎各位转载,转载请注明出处:http://www.uini.net/2010/08/java-load-testing-under-a-large-access-of-jps-jstack.html

本文出自 传播、沟通、分享,转载时请注明出处及相应链接。

本文永久链接: https://www.nickdd.cn/?p=943

发表评论

您的电子邮箱地址不会被公开。

Ɣ回顶部