想来,我在进入测试领域不久的时候,就负责了公司的性能测试。那个时候,没啥经验,过程中也是遇到了很多的问题,好在阻断的问题都解决了,当然,其过程,是比较痛苦的。但是,也有一些问题,并没有得到解决。当然,这些问题,通常不是单单靠测试就可以解决的。在这其中,就有一个这样的问题:在压力测试的过程中,如果直接连接服务器,进行压测,在线程数达到120的时候,测试脚本运行完成之后,不会停下来。如果使用SLB做负载均衡,则起250个线程跑,也是没有问题的,而250就是单台服务器的极限,CPU使用率达到92%了。再加线程,TPS也不会有显著的提升。那个时候,解决的办法就是,即使只有一台服务器,也使用SLB进行负载均衡。
问题没有从根本上解决,但我,肯定是有一些猜想的。那就是服务器存在一种机制,在压力大的时候,会导致一些请求被挂起(类似于线程池的队列,但这个应该不是线程池的队列的问题)。然后,又缺少处理这些挂起的请求的逻辑,导致被挂起的请求,就一直挂着,jmeter会一直等待这些请求的返回,导致脚本停不下来。那个时候,我也是提出了这样的猜想,但开发否认了,而我那时,对于开发完全是门外汉,也想不到办法来证明这样的一种猜想是对还是错。所以也就没有深究这个问题,毕竟可以用SLB避免这个问题。
现在,在测试群里,也有几个测试在做性能测试的时候,