2017-04-26 156 views
0

我在AWS Lambda上使用Java來獲取網站的URL源代碼。我有以下代碼:AWS Lambda - 緩衝讀取器

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.00秒後超時。

在lambda日誌中,我得到以下錯誤:

有效載荷:java.nio.HeapByteBuffer [POS = 0 LIM = 115 =帽115]

我的猜測是,它有東西用編碼做什麼?爲什麼一些網站的處理非常好,並且有些網站會停留在那一行代碼上?

非常感謝所有的答案。

+0

其中一些問題可能與AWS運行的VPC有關。檢查您的VPC配置並查看是否有任何設置可以進行微調。 – kosa

回答

0

這是進行連接,發送請求和讀取響應的第一部分的時間點。很明顯,服務器在一個或多個這些事情上很慢。

+0

那麼是否有任何解決方法或者它只是Lambda中的一個錯誤? –