有一个接口 比如 如果使用客户端模拟的情况 我们可以使用下面的代码 |
|
当然 IIS或者其他服务器 能不能接收这样多的并发是另外一回事…现在只考虑客户端如何模拟..
|
|
1分 |
可以用软件啊,loadrunner,或者自己开n多个子线程,把你上面的代码放在子线程里面执行。
|
软件就不说了 测试软件很多 |
|
1分 |
1、默认对同一个hostname的连接数只有两个,因此你要放宽这个限制:
System.Net.ServicePointManager.DefaultConnectionLimit = 100; 2、可以用多线程来做几十几百个的并发。 3、如果是‘1秒几万个’的规模,要用多个机器来做。原因很简单,一台拖拉机是压不垮一台推土机的。 |
2分 |
一台机器,5分钟内能执行5000次也就不错了。如果要“1秒钟10000次访问”,你需要用2000台电脑做测试客户端。
几乎所有的“压力测试”都是用来分析“趋势的”,不是真实的。不要以为压力测试数据可以直接看。 |
2分 |
线程池技术是用来处理用户的并发的,是模拟不了并发的,模拟并发最好的方法是用,压力测试软件或者负载软件,如果非要自己开发模拟并发,做好自己用thread类,自己控制线程的声明周期,或者用task类,多核编程
|
2分 |
用台式机测试服务器,你不用几百台来测试,根本测试不出服务器的极限
因为一定是台式机先挂掉 |
System.Threading里的Timer就好,会自动给你起线程。你要每秒几万个,就需要几十个每毫秒触发一次的Timer
|
|
1分 |
多线程不代表并发,当前CPU同时能执行几个线程才是你这台电脑真正能够触发并发的数量,否则还是等待轮询的。
|
1分 |
7楼说的很有道理,一台pc去测试一台服务器的极限,只能说 呵呵
|
1分 |
从内核的并行运算来讲9L说的很有道理,CPU是硬件,必然有极限
但是,当我们new了很多线程,比如几万个,然后遍历start(),为什么CPU使用率并没有明显上升呢? 因为你的测试是基于http, 基于tcp的,系统默认是有连接数限制的,这种网络IO的耗时相比CPU而言太慢了,所以CPU绝大多数时候还是闲着 之前做过类似的测试,在不修改TCP连接数的情况下,用for了2000个线程(中间没有sleep)偶尔会出现连接超时,当然这也要看服务端处理请求的复杂度了 |
100分 |
ThreadStart t = new ThreadStart(new Action(() => { Parallel.For(1, 500, (i) => { //code }); })); Thread tx = new Thread(t); tx.IsBackground = true; tx.Start(); /pre> |