如何解决Kafka Connect流和Postgresql DataFileRead性能降低
我正在使用Kafka Connect来流化具有250,000,000条记录的数据库。从源头读取没问题,它在不明显的时间内被完全读取并存储在Kafka经纪人中。不过,接收器一侧的速度非常慢,并且需要几天才能完成。
我正在使用具有以下配置的JDBC Sink连接器:
"config": {
"auto.create": "true","auto.evolve": "true","connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector","insert.mode": "upsert","pk.fields": "id","pk.mode": "record_value","tasks.max": "20","batch.size": "5000","max.poll.records": "5000"
}
我正在使用aws postgres RDS实例:db.m5.4xlarge(8核16vcpus 64gb ram)
接收器表除主键外没有其他索引。借助RDS性能见解, DataFileRead 和 WALWriteLock 消耗了大量活动(DataFileRead〜60%,WalWriteLock〜30-40%)。
我不熟悉数据库速度和管理,这是典型的性能吗?如果没有,我可以考虑采用哪种方法来提高性能?这是我实例的一个例子,不够处理写操作吗?
这是数据库负载的图像,后端附近的绿线的增长是当我将所有索引放到受影响的接收器表上时
解决方法
我在发布前约20分钟清除了除主键以外的所有索引。这成倍地增加了处理时间,现在已经处理了几百万行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。