高并发得时候服务器压力大,是内存的问题还是cpu的问题?你好,我是一枚Java开发人员,欢迎关注我的头条号交流行业里关于代码方面的那点事,谢谢!首先,你的这个问题描述的有些问题,你的问题应该是Web应用部署在Linux下的Tomcat容器中,在高并发的时候服务器压力大
高并发得时候服务器压力大,是内存的问题还是cpu的问题?
你好,我是一枚Java开发人员,欢迎关注我的头条号交流行业里关于代码方面的那点事,谢谢!首先,你的这个问题描述的有些问极速赛车/北京赛车题,你的问题应该是Web应用部署在Linux下的Tomcat容器中《读:zhōng》,在高并发的时候服务器压力大。线程开的多少跟你的Web程序有关,跟Tomcat无关,如果你怀疑线程的问题,你得检查你的程序,下面我告诉你一个方法,可以排查(jstack之jvm性能调优,也是我在工作中实际遇到的一个问题)。
如何用jstack找出最耗CPU的线程并定位代码
jstack是JVM自带的一个堆栈跟踪工具。根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多,下面是具体操作过程。1、用top命令查看Linux服务器CPU、内存及IO的使用情况
如果服务器压力大[dà],通过是由于某个进程占用CPU资源过高导致的(针对这个问题,你看下java进程),可以在top视图里很清晰的看{kàn}到,高的时候会超过百分百。
2、找出[拼音:chū]java进程的PID
命开云体育《练:mìng》令:ps -ef|grep java
输入的(pinyin:de)java进程的PID=21711
3、找出进程内最耗CPU的《练:de》线程
根据第2步中的PID找出进程内最耗CPU的线程,可以用以(读:yǐ)下三条命令:
- ps -Lfp pid
- ps -mp pid -o THREAD, tid, time
- top -Hp pid
TIME记录了各线程耗费CPU的时间,其中PID为21742的线程耗时最多(读:duō)。
澳门巴黎人4、用jstack命令输出进程的堆栈信息,并定位相(读:xiāng)应代码
由于jstack输出的堆栈信息里,线程PID全是16进制,所以,我们《繁:們》需求将第三步最耗时的线程21742转为16进定{拼音:dìng},可以这么(繁体:麼)做:
printf "%x " 21742
得到21742的十六进制值为54ee,下面会用到,实在不会写,就用(yòng)计(繁体:計)算器(运行里(繁体:裏)输入:calc即可弹出)
开云体育jstack 输出堆[练:duī]栈信息的命令:
我的天,原[读:yuán]来问题出在ActiveMQ上,是Web应用跟ActiveMQ通讯时出现了问题,通过检查MQ后才发现,MQ挂死了,在IE里访问(繁:問)MQ的管理控制台都打不开,MQ重启后一切正常。
很多程序员都是[shì]喜欢开发新的需求,不喜欢修改BUG,尤其是一些疑难杂症。所以很多人对JVM性能调优相关的(pinyin:de)东西知[读:zhī]道的很少。其实,JVM性能调优是Java中非常重要的知识点,我们要必须了解,尤其是一些JVM调优工具。
如果大家有什么疑问,或者有更好的知【拼音:zhī】识经验(yàn),不妨分享出来,共同学习,共同进步,谢谢大家!
本文链接:http://10.21taiyang.com/Home-FurnishingsHome/22544458.html
tomcat服务器的并发[繁体:發]处理的原理转载请注明出处来源