程序问答
发布时间:2022-06-02 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AWS Lambda 抛出 ReadTimeout,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如何解决AWS Lambda 抛出 ReadTimeout?
开发过程中遇到AWS Lambda 抛出 ReadTimeout的问题如何解决?下面主要结合日常开发的经验,给出你关于AWS Lambda 抛出 ReadTimeout的解决方法建议,希望对你解决AWS Lambda 抛出 ReadTimeout有所启发或帮助;
@H_
197_2@我需要调用一次 lambda 函数(无需重试)。
执行该 lambda 最多需要 5/10 分钟。
@H_
197_2@我
发现了多篇关于超时的帖子,每一篇都没有成功
try {
Invokerequest invokerequest = new Invokerequest()
.withFunctionname("mylambdaname")
.withPayload(objectMapper.writeValueAsString(payload));
//invokerequest.setSdkrequestTimeout(0);
//invokerequest.setSdkClIEntexecutionTimeout(0);
//invokerequest.withSdkrequestTimeout(0);
//invokerequest.withSdkClIEntexecutionTimeout(0);
AWSLambda awsLambda = AWSLambdaClIEntBuilder.standard()
.withCredentials(new EC2ContainerCredentialsProvIDerWrapper())
.withRegion(Regions.EU_West_1)
.withClIEntConfiguration(new ClIEntConfiguration()
//.withConnectionTimeout(0)
//.withrequestTimeout(0)
//.withClIEntexecutionTimeout(0)
//.withSocketTimeout(0)
.withMaxErrorRetry(0)
).build();
awsLambda.invoke(invokerequest);
} catch (serviceException | JsonProcessingException E) {
LOGGER.error(e.getmessage());
}
@H_
197_2@设置超时(如 15*60*1000)或无 (0) 仍会在恰好一分钟后触发
ReadTimeout
。
我还尝试从 AWS 安装 SDK v2,但出现了同样的问题。
@H_
197_2@尝试过的例子:
- AWS Lambda timeout when another (long) Lambda is invoked
- How to increase the timeout for AWS Lambda client
- AWS Lambda Java function invoked multiple times
@H_
197_2@PS:如果长任务被缩短,lambda 确实可以工作,所以这里的一切都与超时有关
@H_
197_2@完整的堆栈跟踪
@H_
197_2@java.net.socketTimeoutException:读取超时
在 java.net.socke
TinputStrea
m.socketRead0(本机方法)
在 java.net.socke
TinputStrea
m.socketRead(Socke
TinputStrea
m.java
:116)
在 java.net.socke
TinputStrea
m.read(Socke
TinputStrea
m.java
:171)
在 java.net.socke
TinputStrea
m.read(Socke
TinputStrea
m.java
:141)
在 sun.security.ss
l.SSLSocke
TinputRecord.read(SSLSocke
TinputRecord.java
:457)
在 sun.security.ss
l.SSLSocke
TinputRecord
.bytesInCompletePacket(SSLSocke
TinputRecord.java:68)
在 sun.security.ss
l.SSLSocketImp
l.readApplicationRecord(SSLSocketImp
l.java
:1095)
在 sun.security.ss
l.SSLSocketImp
l.access$200(SSLSocketImp
l.java:72)
在 sun.security.ss
l.SSLSocketImpl$AppinputStrea
m.read(SSLSocketImp
l.java:815)
在 org.apache.
http.imp
l.io.SessioninputBufferImp
l.streamRead(SessioninputBufferImp
l.java
:137)
在 org.apache.
http.imp
l.io.SessioninputBufferImp
l.fillBuffer(SessioninputBufferImp
l.java
:153)
在 org.apache.
http.imp
l.io.SessioninputBufferImp
l.readline(SessioninputBufferImp
l.java:280)
在 org.apache.
http.imp
l.conn.Default
httpResponseParser.parsehead(Default
httpResponseParser.java
:138)
在 org.apache.
http.imp
l.conn.Default
httpResponseParser.parsehead(Default
httpResponseParser.java:56)
在 org.apache.
http.imp
l.io.Abstract
messageParser.parse(Abstract
messageParser.java:25
9)
在 org.apache.
http.imp
l.DefaultB
httpClIEntConnection.receiveResponseheader(DefaultB
httpClIEntConnection.java
:163)
在 org.apache.
http.imp
l.conn.CPoolProxy.receiveResponseheader(CPoolProxy.java
:157)
在 org.apache.
http.protoco
l.httprequestExecutor.doReceiveResponse(
httprequestExecutor.java:273)
在 co
m.amazonaw
s.http.protoco
l.Sdk
httprequestExecutor.doReceiveResponse(Sdk
httprequestExecutor.java:82)
在 org.apache.
http.protoco
l.httprequestExecutor.execute(
httprequestExecutor.java
:125)
在 org.apache.
http.imp
l.execchain.MainClIE
ntexec.execute(MainClIE
ntexec.java:272)
在 org.apache.
http.imp
l.execchain.ProtocolExec.execute(ProtocolExec.java
:186)
在 org.apache.
http.imp
l.clIEnt.Internal
httpClIEnt.doExecute(Internal
httpClIEnt.java
:185)
在 org.apache.
http.imp
l.clIEnt.Closeable
httpClIEnt.execute(Closeable
httpClIEnt.java:83)
在 org.apache.
http.imp
l.clIEnt.Closeable
httpClIEnt.execute(Closeable
httpClIEnt.java:56)
在 co
m.amazonaw
s.http.apache.clIEnt.imp
l.Sdk
httpClIEnt.execute(Sdk
httpClIEnt.java:72)
在 co
m.amazonaw
s.http.Amazon
httpClIEnt$
requestExecutor.executeOne
request(Amazon
httpClIEnt.java
:1258)
在 co
m.amazonaw
s.http.Amazon
httpClIEnt$
requestExecutor.execute
Helper(Amazon
httpClIEnt.java
:1074)
在 co
m.amazonaw
s.http.Amazon
httpClIEnt$
requestExecutor.doExecute(Amazon
httpClIEnt.java:745)
在 co
m.amazonaw
s.http.Amazon
httpClIEnt$
requestExecutor.executeWithTimer(Amazon
httpClIEnt.java:71
9)
在 co
m.amazonaw
s.http.Amazon
httpClIEnt$
requestExecutor.execute(Amazon
httpClIEnt.java:701)
在 co
m.amazonaw
s.http.Amazon
httpClIEnt$
requestExecutor.access$500(Amazon
httpClIEnt.java:66
9)
在 co
m.amazonaw
s.http.Amazon
httpClIEnt$
requestExecutionBuilderImp
l.execute(Amazon
httpClIEnt.java:651)
在 co
m.amazonaw
s.http.Amazon
httpClIEnt.execute(Amazon
httpClIEnt.java:515)
在 co
m.amazonaw
s.service
s.lambda.AWSLambdaClIEnt.doInvoke(AWSLambdaClIEnt.java:2682)
在 co
m.amazonaw
s.service
s.lambda.AWSLambdaClIEnt.invoke(AWSLambdaClIEnt.java:2651)
在 co
m.amazonaw
s.service
s.lambda.AWSLambdaClIEnt.invoke(AWSLambdaClIEnt.java:2640)
在 co
m.amazonaw
s.service
s.lambda.AWSLambdaClIEnt.executeInvoke(AWSLambdaClIEnt.java
:1503)
在 co
m.amazonaw
s.service
s.lambda.AWSLambdaClIEnt.invoke(AWSLambdaClIEnt.java
:1474)
在 Repository.invokeLambda(Repository.java:60)
在
service.invoke(
service.java
:40)
在 Controller.invoke(Controller.java:37)
在控制器$$FastClassBySpringcglib$$9d602606.invoke()
解决方法
@H_
197_2@这些方法应该可以完成我看到您已注释掉的技巧:
TOOL_NODE_FLAGS
setSDKrequestTimeout(int milliseconds)
@H_
197_2@我认为您不应该使用 0。您应该使用
setSdkClientexecutionTimeout(int milliseconds)
@H_
197_2@
https://doc
s.aw
s.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/AmazonWeb
service
request.html#setSdk
requestTimeout-int-
大佬总结
以上是大佬教程为你收集整理的AWS Lambda 抛出 ReadTimeout全部内容,希望文章能够帮你解决AWS Lambda 抛出 ReadTimeout所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。