others linux服务器运维 django3 监控 k8s golang 数据库 大数据 前端 devops 理论基础 java oracle 运维日志

seatunnel 故障记录

访问量:46 创建时间:2026-01-10

seatunnel doris 307 Temporary Redirect

seatunnel stream load 报错。sink是doris集群。

报错日志:Caused by: org.apache.seatunnel.connectors.doris. exception.DorisConnectorException: Errorcode: [Doris-1]. ErrorDescription:[stream load error] - HTTP/1.1 307 Temporary Redirect

这个问题是出现报错的时候doris的FE节点卡顿导致的。如果有监控可以看到这时监控数据缺失,无法采集。

集群worker全部无响应

worker会先报java.lang.Out0fMemoryError: Java heap space 后面会报[a.5.e.5.5.5. DefauLtSlOtService] (hz. main,seaTunnel,slotservice.thread]l - fa1led send heartbeat to resource manager later. this address:[]:5802 提交任务的客户端会报 deployed node([IP]:5802) offline

增加worker的xmx

seatunnel OperationTimeoutException

seatunnel com.hazelcast.core.OperationTimeoutException submitJobOperation invocation failed to complete due to operation-heartbeat-timeout

在seatunnel配置文件hazelcast-master.yaml 中增大下面的参数。默认是120秒。 hazelcast.operation.call.timeout.millis: 150000 # 操作调用超时时间(毫秒)

jvm 配置

jdk8版本

-Xms16g
-Xmx16g
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/data/seatunnel/dump/
-XX:MaxMetaspaceSize=8g
-XX:+UseG1GC
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:/data/seatunnel/logs/gc.log
-XX:MaxGCPauseMillis=5000        # 更合理的暂停目标
-XX:InitiatingHeapOccupancyPercent=45
-XX:+UseStringDeduplication
-XX:GCTimeRatio=4               # 提高吞吐
-XX:G1ReservePercent=15         # 默认值,更安全
-XX:ConcGCThreads=10             # 根据 CPU 核心数调整
# 移除 -XX:G1HeapRegionSize=16M,让 JVM 自动选择
JVM 参数 作用说明 工作原理
-Xms16g 设置 JVM 初始堆内存大小为 16GB JVM 启动时立即向操作系统申请 16GB 虚拟内存作为 Java 堆起始空间,避免运行时扩容带来的延迟;与 -Xmx 相等可固定堆大小,提升稳定性。
-Xmx16g 设置 JVM 最大堆内存为 16GB 限制 Java 堆(Young + Old 区)不超过 16GB;若对象分配需求超过且无法回收足够空间,则抛出 OutOfMemoryError: Java heap space
-XX:+HeapDumpOnOutOfMemoryError 在发生 OOM 时自动生成堆转储文件 JVM 在抛出 OutOfMemoryError 前,将整个堆中对象快照写入 .hprof 文件,用于后续内存分析(如使用 MAT 工具)。
-XX:HeapDumpPath=/data/seatunnel/dump/ 指定堆转储文件的保存路径 若路径为目录,JVM 生成 java_pid<pid>.hprof;若为文件前缀,则追加 .hprof;需确保路径可写且磁盘有足够空间。
-XX:MaxMetaspaceSize=8g 限制 Metaspace(元空间)最大为 8GB Metaspace 存储类元数据(位于本地内存),默认无上限;设上限可防止因动态类加载(如 CGLib)导致系统内存耗尽,超限时抛出 Metaspace OOM
-XX:+UseG1GC 启用 G1(Garbage-First)垃圾回收器 将堆划分为多个 Region,采用并发标记 + 混合回收策略,优先回收垃圾最多的 Region,目标是实现可预测的暂停时间,适合大堆和低延迟场景。
-XX:+PrintGCDetails 打印详细的 GC 日志 每次 GC(Young/Mixed/Full)输出类型、内存变化、暂停时间等信息,用于性能分析和调优。
-Xloggc:/data/seatunnel/logs/gc.log 将 GC 日志输出到指定文件 重定向 GC 日志到文件(JDK 8 及以下有效);JDK 9+ 应使用 -Xlog:gc*...;需注意日志轮转以防磁盘占满。
-XX:+PrintGCDateStamps 在 GC 日志中添加绝对日期时间戳 每行日志开头包含如 2026-01-15T17:06:30.123+0800 的时间戳,便于与应用日志对齐排查问题。
-XX:MaxGCPauseMillis=5000 设定 G1 GC 期望的最大暂停时间目标为 5000ms G1 会动态调整 Young 区大小、Mixed GC 回收数量等以尽量满足该目标;但仅为“软目标”,不保证绝对满足;值越大越偏向高吞吐。
-XX:InitiatingHeapOccupancyPercent=45 当堆使用率达 45% 时启动并发标记周期 控制 G1 何时开始并发标记(用于识别可回收的 Old Region);默认 45%,提高可减少 GC 频率但增加 Full GC 风险。
-XX:+UseStringDeduplication 启用 G1 字符串去重功能(JDK 8u20+) 在 GC 并发阶段,将内容相同的 String 对象共享同一个 char[] 数组,节省内存;代价是增加 CPU 和 GC 开销。
-XX:GCTimeRatio=4 设定 GC 时间与应用时间的比例目标 目标吞吐率 = 1/(1+4) = 80%(即 20% 时间用于 GC);值越大,越偏向高吞吐(默认通常为 9,即 90% 应用时间)。
-XX:G1ReservePercent=15 保留 15% 堆空间作为应急缓冲区 防止 Evacuation(对象复制)过程中因目标 Region 不足而失败(避免退化为 Full GC);默认 10%,大堆可适当提高。
-XX:ConcGCThreads=12 设置并发 GC 阶段使用的线程数为 12 用于并发标记、清理、字符串去重等非 STW 阶段;线程数过高会抢占应用 CPU 资源;通常建议为 ParallelGCThreads / 4
-XX:G1HeapRegionSize=16M 手动设置 G1 Region 大小为 16MB G1 堆由约 2048 个 Region 组成;16GB 堆下设为 32MB 会导致仅 512 个 Region,粒度过粗,可能降低回收效率;建议让 JVM 自动选择(通常 8~16MB)。
登陆评论: 使用GITHUB登陆