分析的第一阶段画架构图做性能测试时,我们需要先画一个架构图,虽然简单,但是让自己脑子里时时记得架构图,是非常有必要的。因为架构级的分析,就是要胸怀架构,在看到一个问题点时,可以从架构图中立即反应出来问题的相关性。
上面这张图是自己脑子里的逻辑图,数据在网络中的流转并不是这样,
而是像下图这样。数据流是从压力机到应用服务器,应用服务器再到网络设备,再到数据库服务器;数据库把数据返回给应用服务器,应用服务器再通过网络设备给压力机。
瓶颈分析定位根据我们之前画的架构图,我们从应用服务器、数据库服务器和压力数据分别定位一下。
首先是带宽的流量大小,也就是前面我们看到的 11M 左右的值。一般来说,100Mbps 是指的 bit per second,但是在应用层基本上都是 byte,所以对 100Mbps 来说,是 12.5MB。
通过应用服务器上的 send-Q(前面数第三列),可以看到服务器和压力机之间的的队列还是很长的,基本上每次查看都存在,这说明队列一直都有堆积。
带宽问题是性能分析中常见的问题之一,其难点就在于,带宽不像 CPU 使用率那么清晰可理解,它和 TCP/IP 协议的很多细节有关,像三次握手,四次挥手,队列长度,网络抖动、丢包、延时等等,都会影响性能,