Динамическое обновление SpringBoot загружается слишком долго при большом количестве свойств - PullRequest
0 голосов
/ 28 октября 2019

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%.

Есть ли исправление для этой проблемы?

1 Ответ

0 голосов
/ 28 октября 2019

Может быть, у вас должно быть меньше свойств в области обновления.

Хранение всего в области обновления нанесет вред вашему приложению. Так что лучше уменьшите область обновления до того места, где это всегда необходимо.

Кроме того, вы также должны проверить соединение между вашим сервером и git, чтобы убедиться, что не наблюдается низкая задержка.

Надеюсьэто помогает.

...