首页 > 解决方案 > 节点中的并发 HTTP POST 请求?

问题描述

我想使用Node编写负载测试用例,主要部分是使用SOCKS5代理同时向API执行5000个请求,第二部分是扫描每个响应并捕获错误。

据我了解,Node 是一个单线程语言,但我可以在同一台机器上运行多个 Node 实例以利用多核。

我仍然不确定实现这一点的最佳方法。我什至没有开始编写代码,因为我不喜欢玩时间。因此,我希望听取社区关于可能的实施选项的意见。

标签: node.jsmultithreadingconcurrency

解决方案


首先,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 个子进程执行相同的操作。


推荐阅读