aws的lambda优化
java代码启动时间长,spring的ioc注入也需要时间,那么怎样减少lambda的运行时间
-
将lambda启动jvm时是不限制cpu的,所以可以把连接redis、数据库放在static中
将容器静态化,在lambda启动类中获取容器时,静态获取
public class GlobalContainer { static ApplicationContext applicationContext=null; public static ApplicationContext getApplicationContext() { return applicationContext; } public static void setApplicationContext( ApplicationContext applicationContext) { GlobalContainer.applicationContext = applicationContext; } }
@Component @Order(value = 0) public class ProviderUtilHelper implements ApplicationRunner { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private ApplicationContext applicationContext; @Override public void run(ApplicationArguments args) throws Exception { logger.info("===========注入springcontext对象================"); GlobalContainer.setApplicationContext(applicationContext); } }
-
将java编译分层,配置一个环境变量即可,具体可以参考https://www.jianshu.com/p/318617435789/
这种效果最显著
JAVA_TOOL_OPTIONS -XX:+TieredCompilation -XX:TieredStopAtLevel=1
-
将lambda的运行环境改成arm架构,需将使用java11
-
采用其它的ioc容器
-
将java代码编译成exe,有待aws支持
-
内存设置为1.75g可以获取到全部的cpu资源
评论