node.js - 节点中的并发 HTTP POST 请求?
问题描述
我想使用Node编写负载测试用例,主要部分是使用SOCKS5代理同时向API执行5000个请求,第二部分是扫描每个响应并捕获错误。
据我了解,Node 是一个单线程语言,但我可以在同一台机器上运行多个 Node 实例以利用多核。
我仍然不确定实现这一点的最佳方法。我什至没有开始编写代码,因为我不喜欢玩时间。因此,我希望听取社区关于可能的实施选项的意见。
解决方案
首先,node.js 中的网络完全是非阻塞和异步的,因此发送 5000 个请求和接收 5000 个请求是 node.js 的单线程可以相当有效地完成的事情。
如果您有很多 CPU 参与处理响应,那么您可能会从涉及更多 CPU 中受益。
Nodejs,现在有WorkerThreads
一个涉及多个 CPU 的最简单方法是启动 N 个 workerThreads(可能与系统中的 CPU 内核数量相同),然后给每个 workerThread 一个任务来启动 N 个请求并报告结果。WorkerThreads 带有用于与主线程通信的基于消息的方案。
根据测试用例的工作方式,您可以在主线程中创建一个工作队列,然后让每个 WorkerThread 在准备就绪时请求一个任务,或者如果工作更简单,您可以配置它,以便每个 WorkerThread 运行 N 个预先设计的启动时请求并报告它们何时完成以及结果是什么。
child_process
在旧版本的 node.js 中,您可以使用该模块对 N 个子进程执行相同的操作。
推荐阅读
- reactjs - Formik FieldArray 删除项目从道具中提供旧数组,如何使用基于类的钩子,即 componentWillReceiveProps 而不是功能 useEffect
- python - 在模型的 Django 管理选项中,例如 ADD/DELETE/UPDATE 未显示
- java - Springboot tomcat 405,但在eclipse tomcat中工作正常
- javascript - 在javascript中使用子类中的静态方法
- c# - 模块化单体架构带来 MSDTC 问题
- javascript - leetcode 是如何做到的:将用户的输入字符串读取为多个 JavaScript 函数,并使用用户的输入参数运行一个主函数
- javascript - 如何通过 Firebase Google 身份验证获取带有刷新令牌的 YouTube 数据 API 访问令牌?
- php - 脚本每天执行以向设备发送订单
- ios - 在 Apple Silicon (M1) 上构建 React Native IOS 说 -lDoubleConversion
- facebook - 如何成为官方 Facebook 业务合作伙伴?