我在节点应用程序中有一个特定的提取请求,该请求仅从S3存储桶中提取json文件并将内容存储在应用程序状态内。
提取请求在99%的时间内都有效,但是由于某种原因,大约每4或5天,我会收到一条通知,指出该应用已崩溃,而当我进行调查时,原因始终是ssl handshake failure
造成的。
我试图弄清楚为什么会发生这种情况,以及在将来的情况下可以防止这种情况发生的解决方法。
获取请求如下所示,并且被称为新访问该网站的任何人。一旦发出请求,并且json现在处于应用程序状态,该请求将不再被调用。
function grabPreParsedContentFromS3 (prefix, callback) {
fetch(`https://s3-ap-southeast-2.amazonaws.com/my-bucket/${prefix}.json`)
.then(res => res.json())
.then(res => callback(res[prefix]))
.catch(e => console.log('Error fetching data from s3: ', e))
}
发生此错误时,将抛出.catch
方法并抛出以下错误消息:
Error fetching data from s3: {
FetchError: request to https://s3-ap-southeast-2.amazonaws.com/my-bucket/services.json failed,
reason: write EPROTO 139797093521280:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:../deps/openssl/openssl/ssl/s3_pkt.c:659:
...
}
有人曾经遇到过这种问题吗?或者不知道为什么会发生这种情况吗?目前,我想知道是否可以限制一次发出的S3请求的数量,这导致它失败?但是该网站也不是很受欢迎,要请求获取大量内容。