系统重构有一段时间了,也陆陆续续的做了数据迁移,业务迁移,作为整个系统的底层服务以及未来整个部门的中台系统,服务的可用性,稳定性以及性能都至关重要,因此最近在大促之前做了一次核心服务的压测。
当然压测生产前必须有一个调试的过程,所以会在测试环境进行压测调试,下面就是对这次压测调试的一个分析和总结。由于个人对性能调优也是新手,经验不到,所以如果有不当之处希望有网友指出,不胜感激。
问题发现
首先是先对系统做个压测,压出系统的瓶颈。经过摸索,使用Jmeter工具完成了初步压测工作,并得出了以下的结论:
压测时发现系统的瓶颈在于CPU,压测CPU达到了98%
问题发现了,那么接下来就是分析了,为啥瓶颈在CPU,以及如何优化?(1140267353)一起成长一起加油的伙伴群!软件测试,与你同行!
发现过程
测试环境使用Jmeter进行接口压测,然后逐步调大并发度,观察系统吞吐量,然后在ares平台(类似skywalking)上监测JVM内存,CPU,线程状态等 然后发现,gc信息和内存信息很稳定,但是cpu会达到90%,这时查看jvm的线程状态,发现又70%左右的线程处于waiting或者timed_waiting状态; 初步推算会不会是线程过多导致cpu过高?
问题分析
场景
首先分析接口的执行流程以及线程池的使用场景