对 Web 应用程序进行负载测试时,我应该发送同步请求还是异步请求?
Should I send synchronous or asynchronous requests when load testing a web app?
在对 Web 应用程序进行负载测试时,我可以
- 在多线程中发送同步请求,或者
- 使用异步客户端并处理回调中的响应。
使用多线程方法,同一线程内的请求仅在收到最后一个响应后才发送。通过线程实现并发。
使用异步方法,可以快速连续发送并发请求。但是,必须定期发送请求,给事件循环足够的时间来处理响应。
例如,使用python,我既可以使用requests
发送请求(同步),也可以使用twisted
或tornado
的异步HTTP客户.
负载测试的方法是什么?
因为负载测试通常是 IO 绑定操作(免责声明:这因您未在问题中描述的系统性质而异)异步方法更好。异步方法减少了线程上下文切换,即使 CPU 没有什么可做的,也会不必要地增加 CPU 的负担。
但是我建议不要尝试发明自己的负载测试工具,尤其是如果您没有这方面的经验。相反,使用像 JMeter.
这样的股票软件
在对 Web 应用程序进行负载测试时,我可以
- 在多线程中发送同步请求,或者
- 使用异步客户端并处理回调中的响应。
使用多线程方法,同一线程内的请求仅在收到最后一个响应后才发送。通过线程实现并发。
使用异步方法,可以快速连续发送并发请求。但是,必须定期发送请求,给事件循环足够的时间来处理响应。
例如,使用python,我既可以使用requests
发送请求(同步),也可以使用twisted
或tornado
的异步HTTP客户.
负载测试的方法是什么?
因为负载测试通常是 IO 绑定操作(免责声明:这因您未在问题中描述的系统性质而异)异步方法更好。异步方法减少了线程上下文切换,即使 CPU 没有什么可做的,也会不必要地增加 CPU 的负担。
但是我建议不要尝试发明自己的负载测试工具,尤其是如果您没有这方面的经验。相反,使用像 JMeter.
这样的股票软件