在发送一个http请求的时候,如果开启keep-alive,可以复用底层tcp连接。
假设并发数是1000,启动1000个线程每个线程来发送请求,开启keep-alive,那么和服务器连接应该是1000个tcp连接吧。
此时服务器处理1000个连接,也没太多问题。如果关闭keep-alive,每次都要重新建立tcp连接,假设压测请求5ms响应,那么服务端就会处在建连和关闭的过程中,而一个tcp连接完成回收是需要时间的,最终导致服务器无法建连。
但是不开启keep-alive,是不是可以认为是一种超过1000个用户的并非场景,因为现实场景,默认情况下,单用户肯定是keep-alive的,而关闭keep-alive,用1000个线程并发,我认为理论上可以模拟远超1000个用户的场景,或者说是模拟系统超高瞬时接入峰值。
我不知道我理解的对不对,想问问大家在压测的时候,是怎么考虑这个问题的,是不是开不开keep-alive,都有对应的场景,需要根据实际情况来处理?
补充:其实更多的是想看看大家的经验,大家压测的时候是以什么为主,配不配keep-alive,配了肯定压测数据好啊,本着严谨的精神,想和大家交流经验