1、测试过程中CPU过高
用vmstat实时监控cpu使用情况。很小的压力AP cpu却到了80%多,
指标是不能超过60%。vmstat 2 (每二秒显示一次系统内存的统计信息)
分析是use cpu过高还是sys cpu过高,常见的是use cpu使用过高。
如果是sys cpu使用过高,先把消耗cpu最多的进程找出来(top命令),
再找到该线程下消耗cpu过高的是哪几个线程,再把该线程转换成16进制,
再用jstack命令来dump线程栈,看这个线程栈在调用什么东西导致use cpu过高。
top -> top -H -p pid ->
printf '0x%x' tid ->
stack pid | grep tid ->
jstack pid > dump01
2、线程死锁
容量测试压测一段时间后,压力工具报连接超时。
造成这种现象的原因很多,比如带宽不够,中间件线程池不够用,
数据库连接池不够,连接数占满等都会造成连接不上而报超时错误。
jstack命令dump线程栈,搜索线程栈里有没有block,
如果有的话就是线程死锁,找到死锁的线程,分析对应的代码
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】
3、数据库死锁
容量测试压测一段时间后,报连接超时。
造成这种现象的原因很多,比如带宽不够,中间件线程池不够用,
数据库连接池不够,连接数占满等都会造成连接不上而报超时错误。
数据库日志中搜索block,能搜到block的话就是存在数据库死锁,找到日志,查看对应的sql,优化造成死锁的sql。
4、数据库连接池不释放
容量测试压测一段时间后,报连接超时。
造成这种现象的原因很多,比如带宽不够,中间件线程池不够用,
数据库连接池不够,连接数占满等都会造成连接不上而报超时错误。
去数据库查看应用程序到数据库的连接有多少个( show full processlist),
假如应用程序里面配置的数据库连接为30,在数据库查看应用程序到数据库的连接也是30,
则表示连接池占满了。
将配置改成90试试,去数据库看如果连接到了90,则可以确定是数据库连接池不释放导致的。
查看代码,数据库连接部分是不是有创建连接但是没有关闭连接的情况。
基本就是这种情况导致的,修改代码即可。
5、TPS上不去
压力大的时候tps频繁抖动,导致总tps上不去。
查看是否有fullgc(tail -f gc_mSrv1.log | grep full)。
pacing设置太小也会导致tps上不去,对抖动大的交易多增加点用户即可。
tps抖动,单压抖动大的交易,发现很平稳,这时怀疑是不是压力太大导致,
所以发容量的时候把压力最大的那只交易分到其他压力机,然后发现tps不抖动了。
注意:多台压力机只影响tps抖动,不会影响服务器的cpu。
看响应时间有没有超时,看用户数够不够。
6、服务器压力不均衡(相差1%-2%是正常的)
跑最优容量的时候,四台AP只有一台cpu超过60%,其他三台都在60%以下。
查看服务器是否有定时任务。
查看是否存在压力机瓶颈。
是否存在带宽瓶颈(局域网不存在此问题)。
查看部署的版本,配置是否一样。
可能别人也在用这些AP,因为同一台物理机上有很多虚拟机,因为别人先用,资源被别人先占了。
下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
最后: 可以在公众号:自动化测试老司机 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!