异步压力测试探索:什么是异步非阻塞
来源:互联网 发布:查看交换机端口速率 编辑:程序博客网 时间:2024/05/17 08:06
Web系统的实时性要求,为每个用户保持一个连接,这些连接大多时间是空闲的。在传统的同步web服务器中,即是为每个用户分配一个线程,这种做法相当耗费资源。
那么什么是同步/异步、阻塞/非阻塞呢?
异步(Asynchronous)和非阻塞(non-blocking)是紧密相关的两个术语,也经常被不加区分使用。但实际它们是不同的概念。
当一个方法在返回前等待某件事情,那么它就被阻塞了。引起阻塞的事情可以是network,可以是IO,也可以是CPU。实际上,任何一个方法都或多或少的被阻塞,因为只要运行就需要CPU。
而我们常说的阻塞/非阻塞,通常是从某一个方面来看的。比如非阻塞的http请求(发送即返回,不等待响应),在域名解析时仍然是阻塞的,只不过这类阻塞从整体上来看影响是非常小的。
而异步说的是,一个方法在执行结束前就返回了,一般会在后台产生一些工作并在未来某一时刻触发一些动作。与之相对应的同步,就是说在方法返回前,要把所有的事情做完。
好吧,还是觉得很难区分。。。不过这不重要,知道是这么一回事就可以了。
来一个例子:
餐厅来了10个顾客,为了提供最佳消费体验,不让顾客等待,为每个顾客分配一个服务员。服务员给顾客安排好座位,把菜单交给顾客,然后在一边等待顾客点餐。点完餐后把订单交给厨房,然后在厨房等待大厨烹饪。菜做好后,将菜送到桌上,然后在桌旁静静的看着顾客吃。。。
这就是同步,为了保证“实时”的服务,需要有一个专门的人员时刻等待。
有人说了,这尼玛不是有病么!哪个餐厅这么干?可是传统的web服务器就是这样的呢,比如apache。
现实中的餐厅为了节省成本,当然不会这么做,也许两个服务员就足够了。给新进来的顾客安排好座位,菜单交给他,然后就可以去忙活其他的顾客了。等顾客点好菜喊一声,赶紧冲过来下单。。。
这就是前文所说的异步方式,服务员不需要等待顾客完成全部任务,就“返回”了。
那有这种方式的web服务器么?当然有了,也是近年来的新趋势,如nginx、tornado等。
又有人说了,这和我们的主题压力测试又有什么关系呢?
我们以往所做的压力测试,一般是要通过一些工具来模拟压力(多用户),比如LoadRunner, Jmeter等,也都是采用这种同步的方式。测试工程师负责写脚本来定义“一个”用户的行为,工具会启动多个线程执行脚本,每个线程只负责自己的脚本(一个用户)。
在测试脚本中,描述了一个用户的典型操作。比如访问一个网址,提交一些数据,等待返回的响应,然后可能还要休息一段时间(ThinkTime)再做下一次操作。
实际上,一个线程在执行脚本的过程中,绝大多数时间都是在等待的,等待服务器响应,以及主动的sleep模拟真实用户的操作间隔。
可以看到,同步方式最大的问题就是浪费资源。一万个用户需要一万个线程,一万个线程需要几台机器才能运行呢?
既然这么多线程都在等待,难道不能用更少的线程么?在一个用户等待的时间,去处理其他用户的事情?
这正是这个系列文章要探索的内容——采用异步的方式来做压力测试。
- 异步压力测试探索:什么是异步非阻塞
- 面试问题什么是异步非阻塞
- php 阻塞和非阻塞,同步与异步的理解,什么是异步非阻塞
- 异步和非阻塞
- 异步和非阻塞
- 异步vs非阻塞
- 同步阻塞, 同步非阻塞,异步阻塞,异步非阻塞
- 阻塞与非阻塞 异步非阻塞
- 同步、异步、阻塞、非阻塞
- 同步,异步,阻塞,非阻塞
- 同步 异步 阻塞 非阻塞
- 同步,异步,阻塞,非阻塞
- 阻塞,非阻塞,异步,同步
- 同步 异步 阻塞 非阻塞
- 同步 异步 阻塞 非阻塞
- 同步 异步 阻塞 非阻塞
- 同步异步 阻塞非阻塞
- 同步 异步 阻塞 非阻塞
- Occlusion-free Face Alignment: Deep Regression Networks Coupled with De-corrupt AutoEncoders阅读笔记
- 解决u-blox在u-center中无法显示北斗卫星的问题
- Socket的基础编程(三)
- bzoj1087[SCOI2005]互不侵犯King
- 关于Spring Boot下Spring Security权限访问设置@PreAuthorize("hasRole('ROLE_ADMIN')")没有用
- 异步压力测试探索:什么是异步非阻塞
- JS改变字体,大、中、小
- 使用static与const关键字时需要掌握的知识
- WEB系统性能问题的分析定位方法
- xcode的基本使用
- 【Algothrim】动态规划实例 (Giving Coins for Candies)
- 代理工具Charles使用
- 性能测试用户模型(三):基础数据分析、场景数据
- IPC机制---Binder 连接池 如何选用合适的IPC方式