Airbyte MSSQL 源连接器中的 Java 堆空间错误

问题描述 投票:0回答:1

我的团队在 2024 年初和年中迁移到 Airbyte,我们开始使用 SQL Server 的 CDC 功能。

但是,其中一项作业因 Java 堆空间错误再次开始失败。

CDC _CT
桌子上有大约。调查时有 91M 行,日志文件在数据库上的保留期限为 3 天。 需要注意的重要一点是,该作业仅包含一个表,每天运行多次同步约 200 万行,运行良好。

但是,每月一次,当月末流程启动并在桌面上发起重大更改时,工作就会开始失败。

这是我们当前的

values.yml
配置:

global:
  edition: "community"
 
  jobs:
    resources:
      limits:
        cpu: 1000m
        memory: 12Gi ## e.g. 500m
      requests:
        cpu: 500m
        memory: 2Gi
 
  env_vars:
    HTTP_IDLE_TIMEOUT: 1800s
    DEBEZIUM_MAX_QUEUE_SIZE_IN_BYTES: 536870912
    #LOG_LEVEL: DEBUG
    CDC_LOG_LEVEL: DEBUG
    #DEBEZIUM_LOG_LEVEL: DEBUG
    MSSQL_CDC_LOG_LEVEL: DEBUG
    JOB_MAIN_CONTAINER_MEMORY_REQUEST: 2Gi
    JOB_MAIN_CONTAINER_MEMORY_LIMIT: 15Gi
    NORMALIZATION_JOB_MAIN_CONTAINER_MEMORY_REQUEST: 2Gi
    NORMALIZATION_JOB_MAIN_CONTAINER_MEMORY_LIMIT: 8Gi
    JAVA_OPTS: "-XX:+ExitOnOutOfMemoryError -XX:MaxRAMPercentage=80.0 -XX:+UseG1GC"
 
webapp:
  ingress:
    annotations:
      kubernetes.io/ingress.class: internal
      nginx.ingress.kubernetes.io/proxy-body-size: 16m
      nginx.ingress.kubernetes.io/proxy-send-timeout: 1800
      nginx.ingress.kubernetes.io/proxy-read-timeout: 1800
 
airbyte-bootloader:
  resources:
      limits:
        cpu: 1000m
        memory: 5Gi ## e.g. 500m
      requests:
        cpu: 500m
        memory: 1Gi
 
worker:
  enabled: true
  # -- Number of worker replicas
  replicaCount: 1
 
  image:
    # -- The repository to use for the airbyte worker image.
    repository: airbyte/worker
    # -- the pull policy to use for the airbyte worker image
    pullPolicy: IfNotPresent
 
  ## worker resource requests and limits
  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
  ## We usually recommend not to specify default resources and to leave this as a conscious
  ## choice for the user. This also increases chances charts run on environments with little
  ## resources, such as Minikube. If you do want to specify resources, uncomment the following
  ## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  resources:
    #! -- The resources limits for the worker container
    limits:
      memory: 5Gi
      cpu: 500m
    # -- The requested resources for the worker container
    requests:
       memory: 1Gi
       cpu: 250m

11 月 5 日提出的相关 GitHub 问题 - https://github.com/airbytehq/airbyte/discussions/48348?sort=new

sql-server cdc airbyte
1个回答
0
投票

这似乎与 SQL Server CDC 本身没有任何关系,更多的是 JVM 堆空间不足以容纳 Airbyte Worker 尝试处理的数据量。

我没有使用过 Airbyte,但堆空间是 JVM 级别的可配置选项。显示的values.yml 文件将JVM 堆空间的大小设置为等于可用RAM 的80% (-XX:MaxRAMPercentage=80.0)。

我猜测这意味着 JVM 可以访问为工作容器配置的 80% 的内存,如果我了解的话,配置文件可能只有 1Gi 的 80%(即 858MiB)。

© www.soinside.com 2019 - 2024. All rights reserved.