kafka-connect-jdbc源连接器OOM

时间:2019-09-13 07:02:28

标签: docker jdbc apache-kafka apache-kafka-connect confluent

我使用的是kafka-connect-jdbc:5.3.1,当我运行连接器时,它会抛出异常:java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Thread-11"

我尝试将堆空间增加到4gb,但仍然失败。 EC2实例类型为t2.large,记录数不超过400万。

我的属性文件看起来像

name=jdbc_source_postgres
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
key.converter=org.apache.kafka.connect.storage.StringConverter
key.converter.schemas.enable=false
value.converter=org.apache.kafka.connect.json.JsonConverter
value.converter.schemas.enable=false

connection.url=jdbc:postgresql:/localhost:5432/demo?user=********&password=*******&defaultFetchSize=10000&useCursorFetch=true
tasks.max=10
table.types=TABLE
table.whitelist=sample_table
mode=timestamp
timestamp.column.name=last_modified
validate.non.null=false
batch.max.rows=100
topic.prefix=kafka02-
poll.interval.ms=3600

我正在通过EC2上的Docker容器运行此连接器,而我的docker文件如下所示

version: "3"
services:
  connect:
    image: kafka-connect:latest
    ports:
      - 80:8083
    network_mode: host
    volumes:
      - .:/src:cached
    environment:
      CONNECT_REST_PORT: 8083
      CONNECT_PLUGIN_PATH: "/usr/share/java"
      CLASSPATH: /usr/share/java/monitoring-interceptors/monitoring-interceptors-5.3.0.jar
      CONNECT_GROUP_ID: "connect"
      CONNECT_CONFIG_STORAGE_TOPIC: connect-configs
      CONNECT_OFFSET_STORAGE_TOPIC: connect-offsets
      CONNECT_STATUS_STORAGE_TOPIC: connect-status
      CONNECT_KAFKA_HEAP_OPTS: "-Xms256M -Xmx8G"
      CONNECT_BOOTSTRAP_SERVERS: localhost:9092
    command: connect-standalone /src/connect-standalone.properties /src/connectors/kafka-source.properties

我已经尝试了所有可能的配置调整,但是都失败了。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

该属性不是CONNECT_KAFKA_HEAP_OPTS。只是KAFKA_HEAP_OPTS

请注意,t2.large本身最多具有8 GB,并且您需要操作系统的开销,因此无论如何您都无法纯粹将8GB分配给容器中运行的Java进程

旁注,建议不要覆盖要独立连接的命令,而应尽可能在多个Connect worker群集中分配任务