SpringBoot слишком долго загружает и обновляет динамические свойства, настроенные в git-файле, имеющем около 12000 свойств.
Я создал небольшой PoC с модулями config-server и client, чтобы продемонстрировать это поведение: https://github.com/kirangodishala/spring-cloud-config-server-client
@RefreshScope
@RestController
class K8sRestController {
@Autowired
private K8sProperties k8sProperties;
@RequestMapping("/k8s-props")
K8sProperties getK8sProperties() {
return k8sProperties;
}
@Data
@Component
@ConfigurationProperties(prefix = "kubernetes")
public class K8sProperties {
private List<ManagedAccount> accounts = new ArrayList<>();
@Data
public static class ManagedAccount {
private String name;
private ProviderVersion providerVersion;
private String environment;
private String accountType;
...
application.yml под config-server
server:
port: 8888
spring:
cloud:
config:
server:
git:
uri: https://github.com/kirangodishala/cloud-config.git
basedir: /tmp/cd1
application:
name: clouddriver
Я ожидал, что SpringBoot только несколько секунд обнаружит, что в свойствах не обнаружено никаких изменений при вызове конечной точки / refresh. Но вместо этого это занимает около 7 минут.
В нашем приложении мы должны проверять изменения каждые 60 секунд, но из-за длительных циклов обновления ЦП постоянно используется на 100%.
Есть ли исправление для этой проблемы?