确定瓶颈之CPU、内存
影响性能的因素
CPU 内存 网络 硬件 i/o 中间件 应用服务器 数据库
家门口的路比较拥堵:解决方案---多来几条路/加宽路/修地铁/修个桥、修整路面、找交警指挥交通/红绿灯、限行、分散周围居民、收费、其他路段的问题
CPU--中央处理器--中央处理单元
%processor time(处理器时间),指系统执行非空闲时间百分百比。
处理时间的阈值(正常范围),对于CPU利用率,每个公司要求不一,一般平均不超过90%是正常,如果其平均值持续超过90%,则怀疑是处理器CPU瓶颈,表示此测试的负载对于目前的硬件过于沉重。
processor queue length(Processor队列长度):处理器中暂时无法处理的线程就成队列,排队等待的线程的个数就称为队列长度。
队列不超过n+1,如果处理器列队中总是有n+1以上的线程通常表示处理器堵塞。
n表示逻辑CPU的个数
判断CPU是否是程序的瓶颈
CPU使用率持续过高,队列长度过长:超过N+1 CPU存在问题:解决方案:增加CPU
第一条线是虚拟用户,第二条线是CPU,当虚拟用户不再增加, CPU使用率还在持续增减,存在问题
如果有多个CPU,按1展开,再按1收起 有问题,但问题不大
Id表示空闲的CPU,CPU使用率85%
内存
available mbytes指当前系统的可用内存(单位M),至少要有10%物理内存。
如何查看内存: windows:计算机---右键--属性
Linux:df -m / free top
Pages fault/sec 处理器每秒处理的错误页数,包括软错误(小错误)和硬错误(大错误)。
内存泄漏
程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
在长时间的性能测试中,如果用户数一直不变,CPU使用率一直平稳,可用内存在逐步减少,考虑是否发生内存泄漏。
----使用过的内存没有及时释放/被回收 gc:垃圾回收
判读是否发生了内存泄漏
在长时间的性能测试中,如果用户数一直不变,CPU使用率一直平稳,可用内存在逐步减少,如果发生的内存泄漏,
process\private bytes计数器的值会 升高↑
process\working set计数器的值会 升高 ↑
memory\available bytes的值会 降低↓
如下图没有发生内存泄漏
该图存在内存泄漏
以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了
各位想获取资料的朋友请点赞 + 评论 + 收藏,三连!
三连之后我会在评论区挨个私信发给你们~