<title>参数</title>
<!-- 加载Query文件-->
<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.js">
</script>
<script type="text/javascript">
$(document).ready(function () {
//模拟10000个异步请求,进行并发
//真正对数据库存储产生影响的是为user用户的stock数量
var max = 15000;
for (var i = 1; i <= max; i++) {
//jQuery的post请求,请注意这是异步请求
$.post({
//根据自己请求修改对应的url
// url: "./question/insertQuestionByRedis.do?times="+i+"&userId=1&question=问题"+i.toString()+"&answer=答案", //使用redis
url: "./question/insertQuestion.do?userId=1&question=问题"+i+"&answer=答案", //没有使用Redis
//成功后的方法
success: function (result) {
}
});
}
});
</script>
利用for循环异步提交,但是for循环是一个一个来的,有点不太懂,请求大佬解答下。
这个是高并发模拟请求,并发很容易跟并行这个概念混淆,计算机操作系统也对并发做过说明,只要在很短时间段内,上一个请求未执行完毕前下一个请求发起都可以算宏观意义的并发。for循环执行是很快的操作,所以是并发而不是并行。
下面摘百度百科介绍并发和并行区别,可以参考下:
并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。
并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
这个不行,js不是多线程的,而且浏览器也有对并发的连接限制,如果你想做压力测试,得使用java之类支持多线程的语言去写。
可以试试 jemeter 进行压测,还有专门的性能测试工具如 Loadrunner 专门做并发测试的。