我正在对一个包含大量数据的数据库进行多次调用,该数据库在Windows 7 64位操作系统上运行。由于这些调用正在排队,因此在第一个错误后,每个HTTP调用都会出现以下错误:
Error: connect ENOBUFS *omitted* - Local (undefined:undefined)
根据我的谷歌搜索,我了解到这个错误意味着我的缓冲区增长太大,我的系统内存无法处理缓冲区的大小。但是我并不真正理解这意味着什么。我正在使用node.js和HTTPS库来处理请求。当请求被排队而套接字正在打开时,缓冲区的大小是否在RAM中分配?什么能够允许缓冲区扩展到更大的大小?这只是硬件限制吗?
我还读到一些操作系统能够更好地处理缓冲区的大小。这是真的吗?如果是这样,哪个操作系统更适合运行需要通过HTTPS请求获取大量数据的节点脚本?
以下是我的请求方式。
for (let j = 0; j < dataQueries; j++) {
getData(function())
}
function getData(callback){
axios.get(url, config)
.then((res) => {
// parse res
callback(parsedRes(res))
}).catch(function(err) {
console.log("Spooky problem alert! : " + err);
})
}
为了简明起见,我省略了一些代码,但这通常是我处理请求的方式。我有一个for循环,每次迭代都会通过axios发出一个GET请求。
我知道有一个axios.all命令可用于存储axios.HTTPMethod返回的promise,但当我设置它以存储promise,然后通过axios.all迭代这些promise时,我的代码没有任何变化。
child_process.spawnSync
的相关内容,请参考:https://stackoverflow.com/questions/63796633/spawnsync-bin-sh-enobufs - undefined