spring boot application running too slow
2022, Dec 18
problem
- build, install, load도 느리지만,
- spring boot start가 제일 느리다.
- 최고 800초를 넘는다.
- 평균 500~600초
Cause
Try1.
spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults=false
Started MochaApplication in 469.81 seconds (JVM running for 475.449)
Try2.
chage db : mysql to h2
started MochaApplication in 466.076 seconds (JVM running for 471.271)
Try3.
- host에 127을 추가하라는 글 (x)→ 이미 있음
- plugin이 문제일 수 있다고 해서 안쓰는 플러그인 disable처리(x)
- hibernate validator를 사용안함으로 설정하라는 글 (x)
- application.yml에 아래 설정 추가
spring: jpa: properties: javax: persistence: validation: mode: none
- start할때 before build옵션 제거
- run java를 java8에서 java17로 변경 - 아주 약간 빨라짐
Try4. add java option
- disable launch optimization 추가
- disable jmx agent 옵션 추가
- result
- as-is : 평균 550초
- to-be: 평균 400초
Try5. change server (tomcat → undertow)
pom.xml 변경
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-undertow</artifactId> </dependency>
application.yml 변경
server: undertow: threads: io: 8 worker: 200
result
- 454 ~ 471초
- 경량이라 기대했는데, 빨라지지 않음
Try6.
- spring.cloud.bus.autoconfigure.exclude 설정하고 lazyInit 적용
bootstrap.yml
spring: cloud: bus: autoconfigure: exclude: - com.ulisesbocchio.jasyptspringbootstarter.JasyptSpringBootAutoConfiguration - io.github.resilience4j.bulkhead.autoconfigure.BulkheadAutoConfiguration - io.github.resilience4j.bulkhead.autoconfigure.BulkheadMetricsAutoConfiguration - io.github.resilience4j.bulkhead.autoconfigure.ThreadPoolBulkheadMetricsAutoConfiguration - io.github.resilience4j.circuitbreaker.autoconfigure.CircuitBreakerAutoConfiguration - io.github.resilience4j.circuitbreaker.autoconfigure.CircuitBreakerMetricsAutoConfiguration - io.github.resilience4j.circuitbreaker.autoconfigure.CircuitBreakerStreamEventsAutoConfiguration - io.github.resilience4j.circuitbreaker.autoconfigure.CircuitBreakersHealthIndicatorAutoConfiguration - io.github.resilience4j.ratelimiter.autoconfigure.RateLimiterAutoConfiguration - io.github.resilience4j.ratelimiter.autoconfigure.RateLimiterMetricsAutoConfiguration - io.github.resilience4j.ratelimiter.autoconfigure.RateLimitersHealthIndicatorAutoConfiguration - io.github.resilience4j.retry.autoconfigure.RetryMetricsAutoConfiguration - io.github.resilience4j.scheduled.threadpool.autoconfigure.ContextAwareScheduledThreadPoolAutoConfiguration - io.github.resilience4j.timelimiter.autoconfigure.TimeLimiterAutoConfiguration - io.github.resilience4j.timelimiter.autoconfigure.TimeLimiterMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.amqp.RabbitHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.audit.AuditAutoConfiguration - org.springframework.boot.actuate.autoconfigure.audit.AuditEventsEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.availability.AvailabilityHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.availability.AvailabilityProbesAutoConfiguration - org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.cache.CachesEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.cassandra.CassandraHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.cassandra.CassandraReactiveHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.cloudfoundry.reactive.ReactiveCloudFoundryActuatorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.cloudfoundry.servlet.CloudFoundryActuatorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.condition.ConditionsReportEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.context.ShutdownEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.context.properties.ConfigurationPropertiesReportEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.couchbase.CouchbaseHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.couchbase.CouchbaseReactiveHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.elasticsearch.ElasticSearchReactiveHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.elasticsearch.ElasticSearchRestHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.endpoint.jmx.JmxEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.env.EnvironmentEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.flyway.FlywayEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.hazelcast.HazelcastHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.health.HealthEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.influx.InfluxDbHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.info.InfoContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.info.InfoEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.integration.IntegrationGraphEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.jms.JmsHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.jolokia.JolokiaEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.ldap.LdapHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.liquibase.LiquibaseEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.logging.LogFileWebEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.logging.LoggersEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.mail.MailHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.management.HeapDumpWebEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.management.ThreadDumpEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.KafkaMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.Log4J2MetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.LogbackMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.MetricsEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.SystemMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.amqp.RabbitMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.cache.CacheMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.data.RepositoryMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.appoptics.AppOpticsMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.atlas.AtlasMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.datadog.DatadogMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.dynatrace.DynatraceMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.elastic.ElasticMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.ganglia.GangliaMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.graphite.GraphiteMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.humio.HumioMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.influx.InfluxMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.jmx.JmxMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.kairos.KairosMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.newrelic.NewRelicMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus.PrometheusMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.signalfx.SignalFxMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.stackdriver.StackdriverMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.statsd.StatsdMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.export.wavefront.WavefrontMetricsExportAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.graphql.GraphQlMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.jdbc.DataSourcePoolMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.jersey.JerseyServerMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.mongo.MongoMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.orm.jpa.HibernateMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.r2dbc.ConnectionPoolMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.redis.LettuceMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.startup.StartupTimeMetricsListenerAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.task.TaskExecutorMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.web.client.HttpClientMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.web.jetty.JettyMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.web.reactive.WebFluxMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.web.servlet.WebMvcMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.metrics.web.tomcat.TomcatMetricsAutoConfiguration - org.springframework.boot.actuate.autoconfigure.mongo.MongoHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.mongo.MongoReactiveHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.neo4j.Neo4jHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.quartz.QuartzEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.r2dbc.ConnectionFactoryHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.redis.RedisHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.redis.RedisReactiveHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.scheduling.ScheduledTasksEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.security.reactive.ReactiveManagementWebSecurityAutoConfiguration - org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration - org.springframework.boot.actuate.autoconfigure.solr.SolrHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.startup.StartupEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.system.DiskSpaceHealthContributorAutoConfiguration - org.springframework.boot.actuate.autoconfigure.trace.http.HttpTraceAutoConfiguration - org.springframework.boot.actuate.autoconfigure.trace.http.HttpTraceEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.web.mappings.MappingsEndpointAutoConfiguration - org.springframework.boot.actuate.autoconfigure.web.reactive.ReactiveManagementContextAutoConfiguration - org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration - org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagementContextAutoConfiguration - org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration - org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration - org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration - org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration - org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration - org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration - org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration - org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration - org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveDataAutoConfiguration - org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration - org.springframework.boot.autoconfigure.data.couchbase.CouchbaseReactiveDataAutoConfiguration - org.springframework.boot.autoconfigure.data.couchbase.CouchbaseReactiveRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.elasticsearch.ReactiveElasticsearchRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.elasticsearch.ReactiveElasticsearchRestClientAutoConfiguration - org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.ldap.LdapRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration - org.springframework.boot.autoconfigure.data.mongo.MongoReactiveDataAutoConfiguration - org.springframework.boot.autoconfigure.data.mongo.MongoReactiveRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration - org.springframework.boot.autoconfigure.data.neo4j.Neo4jReactiveDataAutoConfiguration - org.springframework.boot.autoconfigure.data.neo4j.Neo4jReactiveRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.r2dbc.R2dbcDataAutoConfiguration - org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration - org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration - org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration - org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration - org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration - org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration - org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration - org.springframework.boot.autoconfigure.graphql.GraphQlAutoConfiguration - org.springframework.boot.autoconfigure.graphql.data.GraphQlQueryByExampleAutoConfiguration - org.springframework.boot.autoconfigure.graphql.data.GraphQlQuerydslAutoConfiguration - org.springframework.boot.autoconfigure.graphql.data.GraphQlReactiveQueryByExampleAutoConfiguration - org.springframework.boot.autoconfigure.graphql.data.GraphQlReactiveQuerydslAutoConfiguration - org.springframework.boot.autoconfigure.graphql.reactive.GraphQlWebFluxAutoConfiguration - org.springframework.boot.autoconfigure.graphql.rsocket.GraphQlRSocketAutoConfiguration - org.springframework.boot.autoconfigure.graphql.rsocket.RSocketGraphQlClientAutoConfiguration - org.springframework.boot.autoconfigure.graphql.security.GraphQlWebFluxSecurityAutoConfiguration - org.springframework.boot.autoconfigure.graphql.security.GraphQlWebMvcSecurityAutoConfiguration - org.springframework.boot.autoconfigure.graphql.servlet.GraphQlWebMvcAutoConfiguration - org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration - org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration - org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration - org.springframework.boot.autoconfigure.hazelcast.HazelcastJpaDependencyAutoConfiguration - org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration - org.springframework.boot.autoconfigure.influx.InfluxDbAutoConfiguration - org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration - org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration - org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration - org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration - org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration - org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration - org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration - org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration - org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration - org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration - org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration - org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration - org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration - org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration - org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration - org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration - org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration - org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration - org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration - org.springframework.boot.autoconfigure.mongo.MongoReactiveAutoConfiguration - org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration - org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration - org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration - org.springframework.boot.autoconfigure.netty.NettyAutoConfiguration - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration - org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration - org.springframework.boot.autoconfigure.r2dbc.R2dbcTransactionManagerAutoConfiguration - org.springframework.boot.autoconfigure.rsocket.RSocketMessagingAutoConfiguration - org.springframework.boot.autoconfigure.rsocket.RSocketRequesterAutoConfiguration - org.springframework.boot.autoconfigure.rsocket.RSocketServerAutoConfiguration - org.springframework.boot.autoconfigure.rsocket.RSocketStrategiesAutoConfiguration - org.springframework.boot.autoconfigure.security.oauth2.client.reactive.ReactiveOAuth2ClientAutoConfiguration - org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration - org.springframework.boot.autoconfigure.security.oauth2.resource.reactive.ReactiveOAuth2ResourceServerAutoConfiguration - org.springframework.boot.autoconfigure.security.oauth2.resource.servlet.OAuth2ResourceServerAutoConfiguration - org.springframework.boot.autoconfigure.security.reactive.ReactiveSecurityAutoConfiguration - org.springframework.boot.autoconfigure.security.reactive.ReactiveUserDetailsServiceAutoConfiguration - org.springframework.boot.autoconfigure.security.rsocket.RSocketSecurityAutoConfiguration - org.springframework.boot.autoconfigure.security.saml2.Saml2RelyingPartyAutoConfiguration - org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration - org.springframework.boot.autoconfigure.security.servlet.SecurityFilterAutoConfiguration - org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration - org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration - org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration - org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration - org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration - org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration - org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration - org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration - org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration - org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration - org.springframework.boot.autoconfigure.web.reactive.ReactiveMultipartAutoConfiguration - org.springframework.boot.autoconfigure.web.reactive.ReactiveWebServerFactoryAutoConfiguration - org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration - org.springframework.boot.autoconfigure.web.reactive.WebSessionIdResolverAutoConfiguration - org.springframework.boot.autoconfigure.web.reactive.error.ErrorWebFluxAutoConfiguration - org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration - org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration - org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration - org.springframework.boot.autoconfigure.webservices.client.WebServiceTemplateAutoConfiguration - org.springframework.boot.autoconfigure.websocket.reactive.WebSocketReactiveAutoConfiguration - org.springframework.boot.autoconfigure.websocket.servlet.WebSocketMessagingAutoConfiguration - org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration - org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration - org.springframework.cloud.autoconfigure.RefreshAutoConfiguration - org.springframework.cloud.autoconfigure.RefreshEndpointAutoConfiguration - org.springframework.cloud.autoconfigure.WritableEnvironmentEndpointAutoConfiguration - org.springframework.cloud.bus.BusAutoConfiguration - org.springframework.cloud.bus.BusRefreshAutoConfiguration - org.springframework.cloud.bus.BusStreamAutoConfiguration - org.springframework.cloud.bus.PathServiceMatcherAutoConfiguration - org.springframework.cloud.bus.jackson.BusJacksonAutoConfiguration - org.springframework.cloud.circuitbreaker.resilience4j.ReactiveResilience4JAutoConfiguration - org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JAutoConfiguration - org.springframework.cloud.client.CommonsClientAutoConfiguration - org.springframework.cloud.client.ReactiveCommonsClientAutoConfiguration - org.springframework.cloud.client.discovery.composite.CompositeDiscoveryClientAutoConfiguration - org.springframework.cloud.client.discovery.composite.reactive.ReactiveCompositeDiscoveryClientAutoConfiguration - org.springframework.cloud.client.discovery.simple.SimpleDiscoveryClientAutoConfiguration - org.springframework.cloud.client.discovery.simple.reactive.SimpleReactiveDiscoveryClientAutoConfiguration - org.springframework.cloud.client.hypermedia.CloudHypermediaAutoConfiguration - org.springframework.cloud.client.loadbalancer.AsyncLoadBalancerAutoConfiguration - org.springframework.cloud.client.loadbalancer.LoadBalancerDefaultMappingsProviderAutoConfiguration - org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerBeanPostProcessorAutoConfiguration - org.springframework.cloud.client.loadbalancer.reactive.ReactorLoadBalancerClientAutoConfiguration - org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration - org.springframework.cloud.client.serviceregistry.ServiceRegistryAutoConfiguration - org.springframework.cloud.commons.config.CommonsConfigAutoConfiguration - org.springframework.cloud.commons.security.ResourceServerTokenRelayAutoConfiguration - org.springframework.cloud.config.client.ConfigClientAutoConfiguration - org.springframework.cloud.configuration.CompatibilityVerifierAutoConfiguration - org.springframework.cloud.function.context.config.ContextFunctionCatalogAutoConfiguration - org.springframework.cloud.function.context.config.FunctionsEndpointAutoConfiguration - org.springframework.cloud.function.context.config.KotlinLambdaToFunctionAutoConfiguration - org.springframework.cloud.loadbalancer.config.LoadBalancerCacheAutoConfiguration - org.springframework.cloud.loadbalancer.config.LoadBalancerStatsAutoConfiguration - org.springframework.cloud.loadbalancer.security.OAuth2LoadBalancerClientAutoConfiguration - org.springframework.cloud.netflix.eureka.reactive.EurekaReactiveDiscoveryClientConfiguration - org.springframework.cloud.openfeign.hateoas.FeignHalAutoConfiguration - org.springframework.cloud.stream.binder.kafka.config.ExtendedBindingHandlerMappingsProviderConfiguration - org.springframework.cloud.stream.config.BindersHealthIndicatorAutoConfiguration - org.springframework.cloud.stream.config.BindingServiceConfiguration - org.springframework.cloud.stream.config.BindingsEndpointAutoConfiguration - org.springframework.cloud.stream.config.ChannelsEndpointAutoConfiguration - org.springframework.cloud.stream.function.FunctionConfiguration
LazyBeanConfig
- 일부 bean은 lazy로딩이 되게 설정
import java.util.Arrays; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.kafka.annotation.KafkaListener; @Configuration @Slf4j @Profile("lazyInit") public class LazyBeanConfig { @Bean public static BeanFactoryPostProcessor beanFactoryPostProcessor() { return beanFactory -> Arrays.stream(beanFactory.getBeanDefinitionNames()) .filter(LazyBeanConfig::filterLazyInit) .forEach(beanName -> beanFactory.getBeanDefinition(beanName).setLazyInit(true)); } private static boolean filterLazyInit(String beanName) { if (beanName.endsWith("Subscriber") || beanName.endsWith("Client")) { return false; } else { return true; } } private static boolean hasKafkaListenerAnnotation(String beanName) { try { KafkaListener annotation = Class.forName(beanName).getAnnotation(KafkaListener.class); return annotation != null; } catch (ClassNotFoundException e) {} return false; } }
- active profile로
lazyInit
추가 result
Started MochaApplication in 372.174 seconds (JVM running for 377.947)
Resolved
결국 장비를 맥북으로 변경하고 91초…
Reference
https://stackoverflow.com/a/59654120/14257397