gpt4 book ai didi

java - AWS Lambda Java 多线程

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:46 31 4
gpt4 key购买 nike

你好,我已经为 Kinesis 流创建了一个 AWS Lambda 函数,批量大小为 100,我正在尝试在多线程环境中执行它,但问题是在多线程环境中,与单线程相比,它的工作速度非常慢-线程..就像我可以分享这些数字:对于 512 MB 和 60 秒超时,Lambda 函数在 684 毫秒内执行 955 条记录,在 435 毫秒内执行 1031 条记录,对于多线程,它在 878808 毫秒内执行 430 条记录,在 893862 毫秒内执行 433 条记录相同的内存(即 512 MB 和 60 秒超时)

以下是我在多线程行为中执行的 Lambda 函数代码:

public String myHandler(final KinesisEvent kinesisEvent, final Context context) {
Thread thread = new Thread(new Runnable(){

//@Override
public void run() {
int singleRecord=0;
long starttime=System.currentTimeMillis();
//LambdaLogger lambdaLogger=context.getLogger();
for(KinesisEventRecord rec : kinesisEvent.getRecords())
{
singleRecord=0;
System.out.println("Kinesis Record inside is:"+new String(rec.getKinesis().getData().array()));
//count++;
singleRecord++;
// System.out.println(new String(rec.getKinesis().getData().array()));
}
count=count+singleRecord;
long endtime=System.currentTimeMillis();
long totaltime = endtime-starttime;
time=time+totaltime;
System.out.println("Time required to execute single Lambda function for "+singleRecord+" records is"+" :: "+totaltime+" milliseconds");
System.out.println("Total time required to execute Lambda function for "+count+" records is"+" :: "+time+" milliseconds");
}
});
thread.start();
return null;
} //end of handler method

Lambda 函数在多线程环境下是否执行缓慢?我想知道这个多线程 Lambda 函数处理缓慢的原因可能是什么?如果我希望此函数比单线程函数运行得更快,那么我应该对此代码进行哪些更改?

最佳答案

另外两个选项:

  1. 让您的初始 Lambda 使用 SDK 异步启动实际工作的更多 lambda(扇出)
  2. 使用具有调度偏移和长超时的 Lambda 调度,以便您同时运行多个 lambda。

关于java - AWS Lambda Java 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34179941/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com