同时向node发起请求送上千个请求,如何用代码模拟

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
最近碰到个问题,就是同一个用户几乎同时的发起两次同样的请求,比如买一样东西有一定几率会出现购买两次的情况,代码逻辑判断没错,问题出在判断时序上面。下面是一段购买商品的逻辑判断:
'buyItem': async (req, res, next) =& {
const itemId = req.params.itemId;
const userId = req.headers['current-user-id'];
const orderRecord = await Order.find(itemId, userId)//do mongodb search
if (orderRecord && orderRecord.status === 'paid') {//第二次请求对于这个是否购买过的判断的结果是未购买,因为第一个请求还未创建订单。
return res.status(400).json({
'code': 101,
'message': 'you have already bought it',
'result': {}
// 第一次请求执行到这里了
const orderNew = await Order.create(itemId, userId)//do mongodb create
await User.deduct(userId, item.price);
两次几乎同时的请求,但有一定的先后顺序,第一个请求执行到即将创建订单,但第二个请求因为第一个请求还未创建,导致判断上不符合预期。
我现在的想法是:
方法一:把创建订单放到最前面,因为 mongodb 有读写 latch,所以判断订单是否存在来决定是否进行后续操作,这样虽然能解决比较关键的路由,但并不普适。
方法二:对访问频率进行限制(rate-limit),但因为我使用了 cluster,不好做。
后端采用:node express不知道各位大神有没有相似情况的解决方案.
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
加载页面的时候生成一个token,提交订单的时候一起提交,服务端接受后进行校验!如果服务端已经处理了该token,那么抛弃当前请求;否则就处理请求
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
最近做了个限时抢购的功能,也遇到了同样的问题,由于并发导致的资源竞争问题,也就是“狼多肉少”,处理的思路,对肉做限制,还是对狼制定规则,一个一个来。技术上就是 1.对数据资源做限制 2.制定访问的规则,先到先到,依次处理,数据库层面:利用数据库锁的机制,限制其它没它请求 代码层面:处理思路也很多吧,目前就想到了三种方案,第一:前端做限制 第二:利用队列,将并发问题转化为串行执行, 第三:实现锁的机制,将资源和任务加锁,任务结束,解锁,利用redis可以实现一个锁的机制。方案选择要看并发量和具体的业务场景,目前还没具体的实现代码,只简单的描述了下,自己的一点思路和看法
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
是否可以在前端做判断呢,比如说,一个请求发出时,还未响应,这段时间,按钮无法再次点击.当然,这只适合正常流程,秒杀活动什么的不适合
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这个需要去重处理的,防止订单重复不仅需要前端进行控制,后端也要控制(有时候前端会有非法操作),后端处理:当一个订单来的时候,需要把未处理的订单的信息保存起来的中,(这里可以保存在一个全局变量中,推荐保存在数据库中:比如 redis中 ),根据用户的ID 进行标别,当下一个相同用户在来订单时候,查询是否未处理的订单 和 比较两个订单的时间间隔(这里可以自定义时间间隔进行去重合并)。当处理完订单后,在根据需求处理上一步保存的未处理的订单信息。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以把请求加入队列,保证先后顺序,然后在一个一个对队列的请求做处理,并行变串行。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
并发小的话可以加悲观锁试试
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
的答案只适合对单用户的请求做排重,要想保证多客户端高并发下的资源(商品)状态维护,还需要服务端服务在处理时加锁,如果是分布式服务还需要redis或zookeeper来实现分布式锁。客户端请求的排重和商品防止二次购买是两个方面的问题。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
之前遇到过类似的问题,我是通过加锁来处理的
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。nodejs 请求接口在高并发下耗时很大,而单个请求非常快 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
PPA for Ubuntu
> ppa:chris-lea/node.js
nodejs 请求接口在高并发下耗时很大,而单个请求非常快
11:30:34 +08:00 · 10521 次点击
情况: request.js 库请求接口, express.js 做 server ,实现了 curl http://localhost:8080/proxy-api 本地一个地址,在 router 里用 request.js 请求接口,统计了一下请求耗时,单个请求耗时很低,如下:
get http://ip:9190/user/getUserInfo 13 ms
然后分别使用 webbench 和 ab 做并发测试,并发 500 ,发现接口有非常大的耗时。
# 测试命令
ab -n 1000 -c 200 -r http://localhost:8080/proxy-api
webbench -t 10 -c 500 http://localhost:8080/proxy-api
# 截取部分响应耗时:
get http://ip:9190/user/getUserInfo 2019 ms
cost time:
get http://ip:9190/user/getUserInfo 2062 ms
cost time:
get http://ip:9190/user/getUserInfo 2064 ms
cost time:
get http://ip:9190/user/getUserInfo 2063 ms
cost time:
get http://ip:9190/user/getUserInfo 2062 ms
cost time:
get http://ip:9190/user/getUserInfo 2063 ms
cost time:
get http://ip:9190/user/getUserInfo 2061 ms
cost time:
get http://ip:9190/user/getUserInfo 2063 ms
cost time:
get http://ip:9190/user/getUserInfo 2063 ms
get http://ip:9190/user/getUserInfo 1362 ms
cost time:
get http://ip:9190/user/getUserInfo 1361 ms
cost time:
get http://ip:9190/user/getUserInfo 1362 ms
cost time:
get http://ip:9190/user/getUserInfo 1362 ms
cost time:
get http://ip:9190/user/getUserInfo 1362 ms
cost time:
get http://ip:9190/user/getUserInfo 1363 ms
cost time:
get http://ip:9190/user/getUserInfo 1362 ms
cost time:
get http://ip:9190/user/getUserInfo 1006 ms
cost time:
get http://ip:9190/user/getUserInfo 627 ms
cost time:
get http://ip:9190/user/getUserInfo 629 ms
cost time:
get http://ip:9190/user/getUserInfo 628 ms
cost time:
get http://ip:9190/user/getUserInfo 1403 ms
cost time:
get http://ip:9190/user/getUserInfo 1402 ms
请问哪位朋友有没有解决这类问题的经验?
第 1 条附言 &·&
13:05:23 +08:00
++++++++++
13:00:06 补充一下,简单测试问题的代码,序号输出是无序的,说明是异步,只不过越到后面越耗时:
```
const request = require('request').defaults({
pool: { maxSockets: 5000 }
});
const c = 500;
const api = '替换为一个 api';
function doGet(i) {
const start = Date.now();
const index =
request.get(api, () =& {
const end = Date.now() -
console.log(`${index}: ${end}ms`);
for (let i = 0; i & i++) {
doGet(i);
}
```
执行结果:
```
3: 570ms
1: 582ms
5: 580ms
7: 580ms
9: 580ms
11: 580ms
2: 582ms
0: 591ms
4: 582ms
6: 582ms
12: 582ms
10: 582ms
8: 583ms
14: 583ms
13: 583ms
16: 583ms
17: 584ms
20: 583ms
22: 583ms
24: 583ms
26: 583ms
28: 582ms
30: 582ms
...
457: 2262ms
467: 2263ms
469: 2263ms
237: 2283ms
474: 2267ms
471: 2267ms
493: 2269ms
475: 2272ms
479: 2271ms
477: 2272ms
485: 2272ms
483: 2273ms
481: 2273ms
487: 2273ms
489: 2274ms
495: 2273ms
497: 2273ms
499: 2274ms
491: 4380ms
```
第 2 条附言 &·&
13:12:55 +08:00
发生这种情况,我大概也能理解, js 单线程,任务按队列来的,压的越多越耗时吧,不过才 500 ,应该不至于这么严重吧,关键是什么方式可以优化这种情况呢?
第 3 条附言 &·&
14:16:27 +08:00
统一回一下大家猜测的原因,直接压后端耗时也很小的,所以是前端请求问题。 Transfer rate 大小可以忽略,前端就是本机传输,后端也是局域网,速度不会差什么,带宽也不会跑满,一点点数据。
ab 压前端转发:
Requests per second: 171.05 [#/sec] (mean)
Time per request:
[ms] (mean)
Time per request: 5.846 [ms] (mean, across all concurrent requests)
Transfer rate: 1981.31 [Kbytes/sec] received
ab 直接压后端接口:
Requests per second: 858.12 [#/sec] (mean)
Time per request: 233.068 [ms] (mean)
Time per request: 1.165 [ms] (mean, across all concurrent requests)
Transfer rate: 190.23 [Kbytes/sec] received
console.log 耗时在上面备注的测试代码中并没有统计在内。
换成原生 http ,也是一样结果, superagent 虽然没试,猜测不会好多少。
http.get(api, (res) =& {
res.on('end', () =& {
const end = Date.now() -
console.log(`${index}: ${end}ms`);
res.resume();
}).on('error', (e) =& {
console.log(`Got error: ${e.message}`);
第 4 条附言 &·&
14:42:32 +08:00
node 版本从 v6.9.1 升级为 v7.0.0 ,耗时减少一半, v7 提升了不少性能。但还是有挺高的耗时,差不多在 1500ms 左右。
第 5 条附言 &·&
10:23:29 +08:00
最后总结:根据这几天反复测试,暂时没有找到单核单进程的特别有效的代码优化方法,这可能是极限了吧。
最后可以优化的是: 1 、用 node v7 , 比 v6 版本性能高些。 2 、 pm2 多核多进程部署。
45 回复 &| &直到
17:21:29 +08:00
& & 11:38:39 +08:00
关注下,公司一个系统准备换成 node 跑,有结果后希望分享下:-)
& & 11:45:54 +08:00
@ 好的,目前就这个并发问题了。
& & 11:47:49 +08:00
是不是只开了一个进程?
& & 11:49:27 +08:00
所以 8080 上是个无限牛逼的后端接口,然后 9190 上是你的问题的 node ,里面的逻辑是用 request 捅 8080 ,然后并发有问题?没记错的话, request 库是带连接池的,默认并发只开了 5 ,所以你用并发 500 去压耗时很长是正常的
& & 12:33:04 +08:00
@ 没有做任何进程操作,默认的简单程序
& & 12:42:32 +08:00
你理解反了, 8080 上是 node sever, 9190 是后端接口,并发 node 上一个地址,该地址又用了 request 去请求接口,统计了一下 request 开始到完成的耗时。 然后你说的 request 连接池是 'pool': { maxSockets: 5000 } ?改为 5000 也没有明显提升。
& & 12:47:40 +08:00 via iPhone
你看下系统 cpu 内存 和 load ?
& & 12:48:04 +08:00 via Android
@ 你直接压后端的接口的耗时是多少?
& & 12:50:56 +08:00
看看是否是内存不足 发生内存换页
& & 13:09:05 +08:00
@ 直接压后端耗时也很小的,所以是前端请求问题。ab 压前端转发:Requests per second:
171.05 [#/sec] (mean)Time per request:
[ms] (mean)Time per request:
5.846 [ms] (mean, across all concurrent requests)Transfer rate:
1981.31 [Kbytes/sec] receivedab 直接压后端接口:Requests per second:
858.12 [#/sec] (mean)Time per request:
233.068 [ms] (mean)Time per request:
1.165 [ms] (mean, across all concurrent requests)Transfer rate:
190.23 [Kbytes/sec] received
& & 13:11:28 +08:00
@ @ 我都是在本地测试,只有后端接口是局域网内一个服务器, mac pro 13 中配,应该不是你们所说的问题
& & 13:15:38 +08:00
@ 发下转发的代码
& & 13:16:27 +08:00
你这样测试很可能测试的是 request 请求的后端的接口的返回吧, 很可能是后面的接口不行了
& & 13:23:15 +08:00
把每个步骤的耗时都弄清楚一些。注意 console.log 也可能耗时。网上宣传的高并发是高端服务器跑出来的,普通机器不要期望太高。
& & 13:27:51 +08:00
先用 nginx 把请求转发到后端接口, 压一下看问题是不是 node 层的。确定是 node 层的问题后,换一个请求库例如 superagent 跑一下,看看是不是所有库都有这个问题。我们之前不是局域网时 ab 也是这样,但最后发现是本地带宽跑满了,解决后就没问题了
& & 13:30:59 +08:00
用 visualstudio + node 扩展看下, 里面带有性能分析工具的
& & 13:45:57 +08:00
superagent 跑起来还是有延迟的话,再换原生 http 模块试试,当然你有权限的话可以直接看后台接口的请求耗时对不对。我觉得把 node 层请求用 nginx 转给后台可能有些效果
& & 13:55:29 +08:00 via Android
@ 是不是你的 node 版本问题,我用 node.js 7.0 测你给出来的代码,每个请求的耗时相差不大(第一个与最后一个相差都不超过 80ms )
& & 14:37:45 +08:00
做排队啊。关注下设备的性能,是什么原因找到的,网络还是 cpu 还是内存
& & 14:40:59 +08:00
@ 我从 v6.9.1 升级到了 v7.0.0 ,耗时减少一半,但依然有超过 1000ms 的。 api 地址干脆使用了 http://localhost ,是本机 nginx 默认页面,耗时从 150ms ~ 500ms 左右都有。
& & 14:56:44 +08:00
不懂 node 。考虑一下系统和网络性能,服务端 tcp 监听端口有接受队列, 频繁发起请求可能会有点耗时。可以试一下在单个连接上测试
& & 15:00:19 +08:00
@ 简单代码已附言
& & 15:42:52 +08:00
@ 你试下用以下的代码测下,如果结果差别不大,可能是后端的问题了:```const http = require("http");const server = http.createServer((req, res) =& {
setTimeout(function () {
res.writeHead(200);
res.end();
}, Math.random() * 100);});server.listen(8888);```=============================然后你上面贴出来的脚本也改成这样:```const request = require('request').defaults({
pool: { maxSockets: 5000 }});const c = 500;const api = 'http://localhost:8888';const costs = [];function doGet(i) {
const start = Date.now();
const index =
request.get(api, () =& {
const end = Date.now() -
costs.push(`${index}: ${end}ms`);
if (costs.length === c) {
console.log(costs.join("\n"));
});}for (let i = 0; i & i++) {
doGet(i);}```
& & 15:50:42 +08:00
用上 pm2 结果会不会不一样?
& & 16:26:14 +08:00
用利用多进程多核的特性没?我用的 PM2 测的,服务器是 CPU:Intel(R) Xeon(R) E5-2640 0 @ 2.50GHz 共 24 核 MEM:32G并发数
TPS 响应时间 CPU 成功数 写文件 丢失率 时间.5 0.446 55% % 1 小时.1 0.86 55% % 1 小时 0.198 55% .0195% 11 小时+
& & 18:34:32 +08:00
@ 没有实用多核多进程
& & 18:38:57 +08:00
@ 用了你的代码,用时变的比较均匀,截取最长耗时的和最短耗时,如下:```# 最短耗时:127: 235ms34: 285ms62: 283ms72: 283ms97: 283ms55: 289ms89: 286ms124: 283ms# 最长耗时:279: 611ms267: 612ms437: 600ms467: 599ms421: 608ms417: 609ms436: 608ms479: 606ms461: 607ms443: 608ms448: 607ms438: 609ms430: 609ms```
& & 18:45:18 +08:00
@ 用 pm2 简单部署了下,结果还是一样
& & 18:51:11 +08:00
为啥不把 node 换成 nginx 试试呢?直接 nginx 反向代理试试昂。。。
& & 19:44:28 +08:00
@ 反向代理不是根本目的, node 做页面渲染的,转发接口这是其中一部分,不是 ningx 干的事儿。
& & 20:02:28 +08:00 via iPhone
等下电脑回复
& & 20:57:57 +08:00
这么好的工具试试
& & 21:05:50 +08:00 via Android
@ 这相差还是很大的,或许你可以用 wireshark 抓包,然后统计下时间,看能不能发现问题。
& & 09:45:12 +08:00
@ 基于 Visual Studio ? osx 系统比较尴尬。。。我安装个虚拟机吧
& & 10:52:04 +08:00
@ nonono,问题是你需要确认是 node 的问题还是转发的问题。没问题就可以忽略掉 api 的故障了。。我在使用 nodejs 的过程中转发发现也很诡异,经常堵得严严实实的。。。
& & 11:17:05 +08:00
@ 是这样的,发起 1000 个请求,并发为 1 ,每次耗时都很低,但一旦并发数加大,加到 10 , 50 , 100 ,耗时就随之增加,可以认为是并发下的问题。
& & 11:17:45 +08:00
@ 了解了一下, VS Code 有 mac 版本
& & 11:28:25 +08:00
@ vscode 没 profile 功能,记得
& & 13:56:15 +08:00
而且 windows 上安装 nodejs 后支持这个
& & 10:19:16 +08:00
@ 服务器 24 核,性能不要太好。想问下,你用的测试软件是什么?
& & 10:20:42 +08:00
@ 上次 pm2 用法错了,开双核后转发效率有提高了
& & 10:52:16 +08:00
@ 我司测试大神测的,软件名是 loadrunner
& & 03:09:39 +08:00 via Android
看不懂 尴尬
& & 10:45:47 +08:00
@ 那就好 理论上 pm2 多开就是提高并发啊
& & 17:21:29 +08:00
求教楼主最后解决了吗?我这里 4 核服务器 20W 请求,每个请求要压到 5s 以下。。不知道怎么优化
& · & 3221 人在线 & 最高记录 3762 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 21ms · UTC 01:42 · PVG 09:42 · LAX 18:42 · JFK 21:42? Do have faith in what you're doing.nodejs作为客户端发送请求 - 简书
nodejs作为客户端发送请求
nodejs不只是可以作为服务端响应客户端的请求,还可以作为客户端向其他服务端发送请求。例如一些第三方敏感数据的操作,就可以用nodejs作为中转。
nodejs内置http/https模块,一方面用于搭建服务,另外也提供了作为客户端请求的方法,注意:访问http服务用http模块,方位https服务用https模块,接下来以http作为演示:
http.get()
var http=require("http");
http.get("http://py.amazingtm.com/index.php?keyword=veblen&keytype=0",function(data){
var str="";
data.on("data",function(chunk){
str+=//监听数据响应,拼接数据片段
data.on("end",function(){
console.log(str.toString())
有同学觉得,拼接参数的方式不够优雅,那么可以使用
querystring模块的stringify方法进行转换,下面会有演示。
http.request() --get
var http = require('http');
var qs = require('querystring');
var data = {
time: new Date().getTime()};//这是需要提交的数据
var content = qs.stringify(data);
var options = {
hostname: '127.0.0.1',
port: 10086,
path: '/pay/pay_callback?' + content,
method: 'GET'
var req = http.request(options, function (res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
req.on('error', function (e) {
console.log('problem with request: ' + e.message);
req.end();
http.request() --post
var http = require('http');
var qs = require('querystring');
var post_data = {
time: new Date().getTime()};//这是需要提交的数据
var content = qs.stringify(post_data);
var options = {
hostname: '127.0.0.1',
port: 10086,
path: '/pay/pay_callback',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form- charset=UTF-8'
var req = http.request(options, function (res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
req.on('error', function (e) {
console.log('problem with request: ' + e.message);
// 将数据写入请求体
req.write(content);//注意这个地方
req.end();
会发现,略微有些繁琐,nodejs中有一个第三方模块可以一试
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
pdf下载地址:Java面试宝典 第一章内容介绍 20 第二章JavaSE基础 21 一、Java面向对象 21 1. 面向对象都有哪些特性以及你对这些特性的理解 21 2. 访问权限修饰符public、private、protected, 以及不写(默认)时的区别(201...
Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于 Servlet API 之上。 DispatcherServlet Spring MVC 和许多其他 Web 框架一样,是围绕前端控制器模式设计的。中心 Se...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
日。下午3E三级口试。明天下午英语二级笔试。到娃娃在里面口试,我在外面打听3E辅导班课表。寒假里较大基地两个班,15人一班。说名额不多了。问我报不报呢。我觉得接送有点麻烦,上午三小时,下午三小时。口试辅导4800,笔试辅导3980。这次基地只有这个时间段排...
日,汶川大地震已过去整整十年,经历那场地震的人们这十年无论生活怎样起伏跌宕,总是心有余悸,有种劫后重生的感觉吧。虽然远在一千七百多公里的龙城,但因为当时的爱情,同样牵动着我的心。再往前看,每年的512总是让我想起十二年前我也曾经历过一场假地震,和汶...
#离乳后记# 周五加班至晚十点才到家。边热饭菜边听我妈说:晚上小喜乐要求读《再见,妈妈的奶》。 哦?!我好惊讶。从离乳以来,他表现都很棒,没给大人添任何困扰,只是不再要求读这本书了。有时我忍不住怀疑是否真的做到了引导式离乳,还是说仍然对他心理有伤害? 我妈接着说:他自己边听...
今天和大家一起来了解一下,熬夜给我们身体带来的伤害。 有很多人表示自己经常因为复习和加班熬夜,还有一些人说自己天生就是熬夜族,早了睡不着。网络另一项“熬夜健康调查”显示,超五成网友表示经常或一直在零点后入睡,18.18%的人更通常超过凌晨1时才睡觉。很多人平时熬夜缺觉,到了...在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
想要批量修改产品信息,
想把产品id为 123,234,345.。。的产品批量修改
提供的接口api是获取产品详细信息接口,和修改产品的接口api
ajax要如何发送呢 后端应该如何处理呢?
使用的是node express
是ajax把要修改的id数组 传给后端吗
然后 后端 循环这个id数组发请求获取详情,再发修改产品的请求
???感觉不应该这样循环请求的吧
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
请求肯定是不会循环的。。修改也应该有批量的方法、不可能接口都是单个修改的
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
主要看你要批量修改的产品内容是否一致,如果一致可以只执行一次sql的, 把要修改的产品id扔进sql语句中就行了
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。同时向node发送上千个请求,如何用代码模拟? - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
假设已经搭好一个node服务器,url为&&。
可以用工具啊, ab、autocannon 等
body{ background: } &/div&
写一个循环, 在里面用http模块的请求功能咯
同问,如果在本机实现的话,会有点不准确吧,并发10000次占用了系统性能。
有没有免费的云平台
不过单机模拟的话如果涉及IO操作,感觉机器吃不消的吧。
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的}

我要回帖

更多关于 nodejs菜鸟教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信