前言
今天我们来压测一个支付的接口,10个并发,压测5分钟。下面我们可以看到tps大概在200多,响应时间在40ms左右。
下面我们来看一下服务器的性能,应用服务器的cpu使用率大概在60%左右。再来看一下数据库服务器,数据库服务器的性能还算正常,cpu使用率大概在25%左右,而且我们支付的接口,还是在做一个写库的操作,下单的时候,会往订单表中插入数据。并且我们不断加压,新增并发,cpu仍然没有大概100%,tps也没有新增,响应时间整体越来越长。通常这种现象我们应该怎么排查呢?
可以从下面两方面来排查:
- 查看具体程序中哪个函数对于cpu的消耗是较高的
- 关注线程情况
下面我们使用 jprofiler
,我们来看一下hotspots,前两个主要是关于jdk和tomcat底层的,我们可以不用管,下面这个是关于数据库相关的操作,因为我们现在压测的接口,会涉及到写库的操作,所以他会对我们的sql进行编译。那么我们从这个角度来看,这个对与cpu的消耗都是正常的,主要是对sql的执行和编译。