其实不是阻塞,但不知道怎么用一句话描述,具体现象后面有详细讲。
用的是 request. 伪代码如下
let count = 100;
function batch() {
// 从数据库用 SELECT ... LIMIT 100 取出 100 条 url
for (let url in urlList) {
const req = request(...);
req.on('error', () => {
// 一些其它操作
count--;
if (count === 0) {
count = 100;
batch();
}
});
req.on('end', () => {
// 一些其它操作
count--;
if (count === 0) {
count = 100;
batch();
}
});
}
第一波发出去的请求是正常的,过了几波后,在创建完 request, 控制权交还给事件循环时, 要等好长时间才会开始发请求,这个等待的时间会越来越久。试过调整连接池,但只能缓解,不能解决。
大家有没有碰到过类似的问题?或者有没有排查问题的思路?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.