SmallBear_007 2024-11-07 15:38 采纳率: 0%
浏览 8

海豚报SERVER_DOWN2

1、问题现象
海豚的版本是3.1.7
报的错误信息如下
Fault tolerance warning
[{"type":"WORKER","host":"/nodes/worker/dolphinscheduler-worker-1.dolphinscheduler-worker-headless:1234","event":"SERVER_DOWN","warningLevel":"SERIOUS"}] 。

2、查看日志
查看日志时,发现报错的那个时间点都有以下相关日志,
关键字current cpu load average x is too high or available memory x is too low

[WARN] 2024-11-06 16:50:59.108 +0800 org.apache.dolphinscheduler.server.worker.task.WorkerHeartBeatTask:[101] - [WorkflowInstance-0][TaskInstance-0] - current cpu load average 236.01 is too high or available memory 14.36G is too low, under max.cpuload.avg=160.0 and reserved.memory=0.3G
[INFO] 2024-11-06 16:50:59.109 +0800 org.apache.dolphinscheduler.server.worker.task.WorkerHeartBeatTask:[89] - [WorkflowInstance-0][TaskInstance-0] - Success write worker group heartBeatInfo into registry, workerRegistryPath: /nodes/worker/dolphinscheduler-worker-0.dolphinscheduler-worker-headless:1234 workerHeartBeatInfo: {"startupTime":1730882939081,"reportTime":1730883059108,"cpuUsage":0.39,"memoryUsage":0.94,"loadAverage":236.01,"availablePhysicalMemorySize":14.36,"maxCpuloadAvg":160.0,"reservedMemory":0.3,"diskAvailable":283.33,"serverStatus":1,"processId":8,"workerHostWeight":100,"workerWaitingTaskCount":0,"workerExecThreadCount":100}
[WARN] 2024-11-06 16:51:09.111 +0800 org.apache.dolphinscheduler.server.worker.task.WorkerHeartBeatTask:[101] - [WorkflowInstance-0][TaskInstance-0] - current cpu load average 204.41 is too high or available memory 14.78G is too low, under max.cpuload.avg=160.0 and reserved.memory=0.3G

3、请问如何解决以上问题?

  • 写回答

1条回答 默认 最新

  • 越重天 新星创作者: Java技术领域 2024-11-08 22:39
    关注

    本答案参考 多次询问 ChatGPT-3.5 后选择的最佳回答,若是满意,还请采纳,谢谢

    根据提供的信息,问题可能是由于CPU负载过高或者可用内存过低导致的,以下是一些可能的解决方法:

    一、关于CPU负载过高

    1. 优化任务调度

      • 检查工作流中的任务调度策略。如果有大量任务同时启动,可能会导致CPU瞬间负载过高。例如,如果有多个计算密集型任务在同一时间点被调度到同一worker节点上,可以调整任务的调度时间,使它们在时间上分散开来。
      • 对于一些可以并行执行但对资源需求较大的任务,可以设置合理的并发度。比如,在Dolphinscheduler中,可以通过调整任务的并行参数,避免过多任务同时竞争CPU资源。
    2. 检查任务代码效率

      • 查看报CPU负载高时正在执行的任务代码。如果是自定义脚本任务,可能存在代码效率低下的情况。例如,存在无限循环或者复杂的嵌套循环,且没有进行有效的优化。可以对代码进行性能分析,找出耗时的操作并进行优化。
      • 如果是数据处理任务,如使用SQL进行数据查询和处理,检查SQL语句是否可以优化。例如,避免使用全表扫描的查询语句,添加合适的索引等。
    3. 资源分配调整

      • 考虑增加worker节点的CPU资源分配。如果是在容器化环境(如Kubernetes)中运行Dolphinscheduler,可以调整worker容器的CPU请求和限制。例如,将CPU请求从原来的较低值提高到一个更合理的值,以满足任务的需求。
      • 或者调整集群的资源分配策略,确保有足够的CPU资源可供Dolphinscheduler使用。如果是在混合负载的集群中,可能需要调整其他非关键任务的资源分配,以优先保障Dolphinscheduler的运行。

    二、关于可用内存过低

    1. 内存使用优化
      • 检查工作流中的任务是否存在内存泄漏的情况。特别是对于长时间运行的任务,如果存在内存不断增长的情况,需要查找代码中的问题。例如,在Java任务中,如果没有正确释放对象引用,可能会导致内存泄漏。
      • 优化任务对内存的使用。如果是数据处理任务,可以考虑分批次处理数据,而不是一次性将大量数据加载到内存中。例如,在处理大数据集时,可以设置合适的批处理大小,以减少内存的占用。
    2. 增加内存资源
      • 类似于CPU资源调整,如果是在容器化环境中,可以增加worker容器的内存请求和限制。例如,将内存限制从当前的较低值提高到一个能够满足任务需求的值。
      • 如果是在物理机或虚拟机上运行,可以考虑增加服务器的物理内存,或者调整虚拟机的内存分配。
    3. 调整内存预留参数
      • 根据实际情况,重新评估reserved.memory参数的设置。如果当前设置的值过高,可能会导致可用内存过早被判定为过低。可以根据集群的整体资源情况和任务的实际内存需求,适当降低这个参数的值,但要确保不会影响系统的稳定性。
    评论

报告相同问题?

问题事件

  • 创建了问题 11月7日