Java AWS Lambda缓冲读取器

Java AWS Lambda缓冲读取器,java,amazon-web-services,aws-lambda,bufferedreader,Java,Amazon Web Services,Aws Lambda,Bufferedreader,我正在AWS Lambda上使用Java获取该站点的URL源代码。我有以下代码: URL yahoo = new URL(url); URLConnection yc = yahoo.openConnection(); yc.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); BufferedReader in = new BufferedReader(newInputSt

我正在AWS Lambda上使用Java获取该站点的URL源代码。我有以下代码:

URL yahoo = new URL(url);
URLConnection yc = yahoo.openConnection();
yc.addRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
BufferedReader in = new BufferedReader(newInputStreamReader(yc.getInputStream(), "UTF-8"));
String inputLine;
StringBuilder a = new StringBuilder();
while ((inputLine = in.readLine()) != null)a.append(inputLine);
in.close();
System.out.println(a.toString());
对于某些站点,代码运行得非常好。每次在我本地的机器上运行都很好。但是,在AWS Lambda上运行时,它会卡在以下部件上:

BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream(), "UTF-8"));
然后我得到:任务在20秒后超时

在Lambda日志中,我得到以下错误:

有效负载:java.nio.HeapByteBuffer[pos=0 lim=115 cap=115]

我的猜测是,这与编码有关吗?为什么有些网站处理得非常好,而有些网站却卡在那行代码上


非常感谢您的所有回答。

这是建立连接、发送请求和读取响应的第一部分的时间点。显然,服务器在一个或多个方面运行缓慢。

实现这一点的简单解决方案是将您的Lambda从它现在所在的VPC中删除

阅读我在这个帖子上的回答,详细解释为什么会发生这种情况


注意:答案与NodeJS无关

我猜它与这个bug有关


从本地系统中尝试导致Lambda函数超时的相同URL,看看是否可以找到根本原因。

那么是否有任何解决方法,或者这只是Lambda中的一个错误?其中一些问题可能与运行AWS的VPC有关。检查您的VPC配置,看看是否有任何需要微调的设置。