cpu 或 内存 偏高的分析套路

参考资料: https://mp.weixin.qq.com/s/fb9YxJr-yDdYQ86RE47y1w

1)通过针对此软件专业的分析工具或命令,找到占用cpu高的函数,
2)通过调用栈(或源码搜索)分析何种场景会频繁调用此函数
解决方案(1 修改调用逻辑,避免繁调用此函数;2 优化此函数)
优化此函数的方法:
走读此函数,看函数在哪一步进行了复杂的运算(计算算法复杂度,对于复杂度高的地方进行优化:如修改数据结构,列表转字典;如修改方法,避免遍历链表等)

=====内存高

服务端内存高可能是因为客户端没有及时取走服务端返回的数据,导致服务端发送缓冲区满,发送缓冲区占用的内存迟迟得不到释放导致的

原文地址:https://www.cnblogs.com/testzcy/p/11576750.html

时间: 2024-11-08 05:35:45

cpu 或 内存 偏高的分析套路的相关文章

linu下java程序占用CPU和内存过高排错处理方案

1:通过jps命令查看所有进程pid. 2:使用top -p pid 针对你所要查的pid查看这个进程的CPU和内存以及负载情况 如图: 使用top -p pid  -H  查看针对每一个线程占用CPU情况进行查询 如果你发现某一个PID占用的CPU过高,就拿到这个PID转换成16进制 例如pid为12760转化成16进制31D8,大写换成小写 jstack 22821|grep -A 10 0x31d8 针对你的每个线程拿出占用CPU的堆栈信息,你可以根据这个去查找CPU的占用 如果你的内存占

JAVA应用程序占用CPU、内存过高分析过程

1.查看cpu占有率 top -P 2.查看进程cpu占用率 ps -mp 3749 -o THREAD,tid,time|sort -rn|head -n 20 3.查看java堆栈信息 su - nobody -c "/usr/java/jdk1.6.0_21/bin/jstack 3749|grep 34d8 -A 30" 注意:这里要使用程序启动的用户执行此命令 使用root会提示: Unable to open socket file: target process not

12月9日 - SQL server CPU占用率过高的分析过程

故障描述:今日二中的服务器CPU占用率一直非常高,几乎接近100%   分析步骤: 需要使用 SQL server自带的 Profiler工具

rabbitmq集群跨机器访问引起内存占用高的问题

rabbitmq的队列并不是分布在集群中,而且每个节点维护自己的 假设A B组成一个集群,rabbit域名或elb指向A,那么client会连接到A.但如果目标queue在B上,rabbit就会有一个内部的"转发机"的机制来维护,相当于代理一样.通过该机制,client仍能正常操作queue 但有一个问题就是,该机制可能会引发内存升高.譬如,B的内存只有100M,A可能会达到1.5G,而此时A上的消息并未有堆积,也不繁忙 rabbitmq主要内存开销是内部database.上述问题的表

记一次查内存异常问题(续《记一次Web应用CPU偏高》)

继上一次查应用的CPU飙高问题(http://www.cnblogs.com/hzmark/p/JVM_CPU.html)过去10天了.上次只是定位到了是一个第三方包占用了大量的CPU使用,但没有细致的去查第三方包为什么占用了这么高的CPU,并且内存为什么如此诡异.总的来说上一次排查带来的收获是熟悉了JVM的工具使用和大致定位到了问题. 在上次排查问题之后,应用出现异常的频率还是较高,终下定决心再查一次,而这次排查的重点落在内存方面.因为怀疑CPU偏高是因为内存的异常导致频繁的GC引起的. 首先

压测过程中,CPU和内存占用率很高,案例简单分析

Q:  最近公司测试一个接口,数据库采用Mongo    并发策略:并发400个用户,每3秒加载5个用户,持续运行30分钟    数据量:8000条左右 压测结果发现:    TPS始终在5左右    而CPU高达99%,内存使用情况也高达1.7G    网卡流量145K 请问这种情况,是哪里的性能出现问题? A:你这个CPU和内存监控的得是web服务器 就是部署程序的机器.    1.尝试查看出现这类情况时候数据库process,看看是否是当时进程到达了所设置的进程数上限.如果是则调整数据库进

MYSQL数据库服务CPU高问题分析与优化

MySQL服务性能监控分析与优化是永恒的主题,做为性能测试人员有时也要站在DBA角度出发进行适当分析与优化,这也是性能测试人员能长期生存发展之路.而资源的使用监控分析才是性能故障分析的根本首要任务.在数据库服务器内部,如果执行的操作会严重受到内存.CPU或磁盘吞吐量中任何一个的影响,则可以将它视为瓶颈. 因此理解服务器如何运行,资源损耗在哪些方面对问题进行故障诊断是非常有价值有意义的活动,具体案例如下. 这些监控分析优化方法等细节我们在品课学院性能实战课堂中都会以实战方式进行实操性测试监控分析实

CPU、内存、IO负载过高排障方法及解决方案

内存使用过高处理方法: 查询手段 使用top查看, 处理方法 1.将没有用的进程杀掉 2.查看占用进程高的应用的日志,对其做相应用的优化 3.增加内存 或者通过pstack这些工具去查对应进程的pid对系统调用的情况来定位故障原因. CPU负载过高处理方法: 查询手段:CPU资源负载过高,可通过使用top命令查出对应cpu资源使用率高的进程, 分析原因: 根据进程判断是什么应用,再去查对应应用的访问量大小,以及日志去定位是因为访问量过大导致,还是因为性能的原因导致. 处理方法: 如果是访问量导致

用windbg+sos找出程序中谁占用内存过高,谁占用CPU过高(转载)

原文地址: http://www.cnblogs.com/Lawson/archive/2011/01/23/1942692.html 很早看到windbg+sos方面的知识,一直没仔细学习,也许因为自己做的系统还不够复杂,也没线上真实环境查看的权限,一直没学习这方面的知识,最近几天仔细找了这方面的资料,自己也写了个可能造成高CPU高内存的测试web页面,发现确实不错,即使一个生手,也可以用工具连蒙带骗的猜出哪里出了问题,当然对一些命令和内部标示更熟悉了后,可以更好的找出问题所在,非常值得学习.