要求:
每秒发10000个请求
问题:
http是短连接,每秒10000个请求,本地端口估计很快就用完了,哪位大神能给个思路?
不会的。别说会自动(手动)关掉,就是不关掉都够你用很久。
原则上你单机测试并发最好不用http模块来测,会消耗大量cpu时间去做http解析,即使你机器并发很强,那么造成并发下的串行运算也会极大的增强,因此你可以直接上tcp去测比较好,顺便可以测试http模块无法做到的一些测试。
大神,能否详细说说。
1.您意思是直接走tcp去发http请求?
2.通常http是短连接,能否将http转为长连接,连上之后不停的发?
3.您说的上tcp,是不是有两层意思:1)长连接,2)节省http解析时间?
@什麼江湖: http是应用层,由tcp实现,就是你1的意思。
长连接还是短连接由双方规定(通常http服务端可设置,它本身也有约定,包括超时等等...);
—— 你的3是错误的认知。
你想短链接就不停的socket过去,然后模拟http请求,然后收到后就关掉行了(测试当然你可以日志下来),这样你可以不必还要走http里面的很多对象解析,比如 Method,StatusCode,Cookie....
@花飘水流兮: 我是这样理解的:如果是短连接,那么如果我要求客户端发10000请求每秒,那势必每秒要建立一万个连接,我想这个指标肯定是上不去的。
@什麼江湖: 1s内上得上得去,取决于你的机器。不可能有绝对并发,操作系统的并发只是相对,你想想cpu的硬件级极限并发才多大,况且进程是对线程数有限制的,win大概是2000多,所以你可以想像,怎么并发的,实际(相对)除了你的cpu核(乘以硬件线程)这个是并发,实际都是站在硬件层看,都不是并发。所以只能说,看你的客户端的速度和服务端的速度。你可以参照jmeter,逐步往上加,看看服务器会在什么“并发数”下慢下来,当然如果服务器太强,单机测试肯定就无用了,比如10000和100000对于服务器来说都是一回事,你10000以内的测试就没用。
@花飘水流兮: 谢谢你的回复,对我很有用
loadrunner、jmeter都可以做到。
压测机分多台,端口就不会很快用完。