flink pg stream cdc 2.3版本, pgoutput插件的,老是偶发这个错误,本地又复现不了这个问题,部署到yarn上,对pg表更新数据 ,为什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您提供的错误消息:
Caused by: org.postgresql.util.PSQLException: ERROR: invalid memory alloc request size 138319752
这是由于 PostgreSQL 中的内存分配问题造成的。当 PostgreSQL 尝试分配超过可用内存的内存时,就会发生这种情况。
在您的情况下,此错误可能是由以下原因引起的:
Flink 任务的并行度过高:每个 Flink 任务都会创建一个 PostgreSQL 连接。如果并行度过高,则可能会导致 PostgreSQL 出现内存不足。
PostgreSQL 配置不当:PostgreSQL 的 shared_buffers 和 max_connections 等配置可能会影响内存使用情况。
其他应用程序正在使用 PostgreSQL:如果您还有其他应用程序同时访问 PostgreSQL,则它们可能会消耗可用内存。
解决此问题的步骤如下:
将 Flink 任务的并行度降低到与可用 PostgreSQL 连接数相匹配的程度。您可以通过以下方式设置并行度:
-- Java
env.setParallelism(4);
-- Scala
env.setParallelism(4)
增加 PostgreSQL 的 shared_buffers 和 max_connections 配置。以下是一些建议的值:
shared_buffers: PostgreSQL 可用内存的 25-50%
max_connections: 并行度 + 10
确保没有其他应用程序正在使用 PostgreSQL 并消耗大量内存。
PostgreSQL 的较新版本可能已经修复了导致此问题的错误。尝试升级到最新版本。
如果您已尝试上述所有步骤但问题仍然存在,则可以联系 PostgreSQL 支持以获取进一步的帮助。
请注意,此错误也可能是由其他因素(例如网络问题)引起的。如果上述步骤无法解决问题,请尝试调查其他潜在原因。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。