Мы запускаем автономный рабочий Apache DolphinScheduler 3.2.0 (не Docker/K8s).
2025-10-02 ~09:40 рабочий процесс перестал принимать соединения на своем порту Netty (1234).
Затем главный регистрировал ошибки соединения, произошла загрузка ЦП. 100 %, и задания зависли.
Все службы DolphinScheduler выглядели «включенными», но рабочий процесс не работал, пока мы не перезапустили его вручную.
Информация о системе
Код: Выделить всё
Memory: 192 GiB (Swap: 8 GiB)
Disk: /data ~400 GiB free
Java: OpenJDK 11.0.24 (Red Hat build)
DolphinScheduler jvm_args_env.sh (master & worker):
-Xms32g
-Xmx32g
-Xmn16g
МАСТЕР-СЕРВЕР
Код: Выделить всё
[WARN] 2025-10-02 09:01:26.576 +0300 org.apache.dolphinscheduler.remote.NettyRemotingClient:[321] - [WorkflowInstance-0][TaskInstance-0] - connect to Host(ip=IP, port=PORT) error
io.netty.channel.AbstractChannel$AnnotatedConnectException: finishConnect(..) failed: Connection refused: /IP:PORT
Caused by: java.net.ConnectException: finishConnect(..) failed: Connection refused
at io.netty.channel.unix.Errors.throwConnectException(Errors.java:124)
at io.netty.channel.unix.Socket.finishConnect(Socket.java:251)
at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.doFinishConnect(AbstractEpollChannel.java:673)
at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:650)
at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:530)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:465)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at java.base/java.lang.Thread.run(Thread.java:829)
[ERROR] 2025-10-02 09:01:26.576 +0300 org.apache.dolphinscheduler.server.master.runner.GlobalTaskDispatchWaitingQueueLooper:[87] - [WorkflowInstance-0][TaskInstance-0] - Dispatch task failed
org.apache.dolphinscheduler.server.master.exception.TaskDispatchException: Dispatch task to IP:PORT failed
at org.apache.dolphinscheduler.server.master.runner.BaseTaskDispatcher.doDispatch(BaseTaskDispatcher.java:101)
at org.apache.dolphinscheduler.server.master.runner.BaseTaskDispatcher.dispatchTask(BaseTaskDispatcher.java:74)
at org.apache.dolphinscheduler.server.master.runner.GlobalTaskDispatchWaitingQueueLooper.run(GlobalTaskDispatchWaitingQueueLooper.java:79)
Caused by: org.apache.dolphinscheduler.remote.exceptions.RemotingException: connect to : Host(ip=IP, port=PORT) fail
at org.apache.dolphinscheduler.remote.NettyRemotingClient.sendSync(NettyRemotingClient.java:210)
at org.apache.dolphinscheduler.server.master.rpc.MasterRpcClient.sendSyncCommand(MasterRpcClient.java:49)
at org.apache.dolphinscheduler.server.master.runner.BaseTaskDispatcher.doDispatch(BaseTaskDispatcher.java:87)
... 2 common frames omitted
РАБОЧИЙ-СЕРВЕР
Код: Выделить всё
[INFO] 2025-10-02 09:01:25.764 +0300 org.apache.dolphinscheduler.server.worker.runner.WorkerTaskExecuteRunnable:[289] - [WorkflowInstance-59856][TaskInstance-507499] - The current execute mode isn't develop mode, will clear the task execute file: /data/dolphin/exec/process/default/15236034355840/15257910743307_11/59856/507499
[INFO] 2025-10-02 09:01:25.765 +0300 org.apache.dolphinscheduler.server.worker.runner.WorkerTaskExecuteRunnable:[304] - [WorkflowInstance-59856][TaskInstance-507499] - Success clear the task execute file: /data/dolphin/exec/process/default/15236034355840/15257910743307_11/59856/507499
[INFO] 2025-10-02 09:01:25.765 +0300 org.apache.dolphinscheduler.server.worker.runner.WorkerTaskExecuteRunnable:[330] - [WorkflowInstance-59856][TaskInstance-507499] - FINALIZE_SESSION
[INFO] 2025-10-02 09:01:52.136 +0300 org.apache.zookeeper.ClientCnxn:[1171] - [WorkflowInstance-0][TaskInstance-0] - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181.
[INFO] 2025-10-02 09:01:52.136 +0300 org.apache.zookeeper.ClientCnxn:[1173] - [WorkflowInstance-0][TaskInstance-0] - SASL config status: Will not attempt to authenticate using SASL (unknown error)
[INFO] 2025-10-02 09:01:59.281 +0300 org.apache.zookeeper.ClientCnxn:[1005] - [WorkflowInstance-0][TaskInstance-0] - Socket connection established, initiating session, client: /0:0:0:0:0:0:0:1:40934, server: localhost/0:0:0:0:0:0:0:1:2181
[INFO] 2025-10-02 09:01:59.282 +0300 org.apache.zookeeper.ClientCnxn:[1444] - [WorkflowInstance-0][TaskInstance-0] - Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, session id = 0x10000001be900ac, negotiated timeout = 30000
[INFO] 2025-10-02 09:01:59.282 +0300 org.apache.curator.framework.state.ConnectionStateManager:[252] - [WorkflowInstance-0][TaskInstance-0] - State change: RECONNECTED
[INFO] 2025-10-02 09:01:59.580 +0300 org.apache.dolphinscheduler.server.worker.processor.WorkerTaskUpdatePidAckProcessor:[59] - [WorkflowInstance-0][TaskInstance-507499] - task execute update pid ack command : TaskUpdateRuntimeAckMessage(success=true, taskInstanceId=507499)
[INFO] 2025-10-02 09:01:59.580 +0300 org.apache.dolphinscheduler.server.worker.processor.WorkerTaskExecuteResultAckProcessor:[58] - [WorkflowInstance-0][TaskInstance-507499] - Receive task execute response ack command : TaskExecuteResultMessageAck(super=BaseMessage(messageSenderAddress=IP:5678, messageReceiverAddress=IP:1234, messageSendTime=1759384886490), taskInstanceId=507499, success=true)
РЕЗУЛЬТАТЫ РАССЛЕДОВАНИЯ
- Работник накопил >21 000 потоков, рост со скоростью ~100 потоков в минуту в течение 77 дней.
- Только стеки потоков использовали ~21 ГиБ ОЗУ.
- Время паузы GC увеличилось с ~80 мс до >1100 мс.
- Когда исполнитель событий Netty перестал отвечать, порт 1234 закрылся и задания остановились.
- После ручного перезапуска все восстановилось, но количество потоков продолжает расти — поэтому ожидается еще один сбой.
Предлагаемые меры по смягчению последствий
- Уменьшите численность молодого поколения, чтобы сократить паузы GC:
Код: Выделить всё
# /data/dolphin/worker-server/bin/jvm_args_env.sh
-Xmn8g # instead of -Xmn16g
- Ограничьте одновременные задачи и установите пороговые значения ресурсов:
Код: Выделить всё
worker:
exec-threads: 50 # was 100
max-cpu-load-avg: 0.7
reserved-memory: 0.3
- Исследуйте возможную ошибку пула потоков DolphinScheduler, например:
- Служба-исполнитель не ограничена
- Обработчики завершения задач не очищают потоки
- Фабрика потоков создает потоки без предел
- Причина подтверждения;
Какие дополнительные доказательства (дампы потоков, журналы GC, диагностика Netty) окончательно подтвердят это и исключат причины, связанные с ОС или сетью?
- Немедленные меры по устранению последствий
Должен ли я также настроить параметры -Xmx, -Xss или GC для повышения оперативности?
- Шаги диагностики
Например:
- jstack — что искать (повторяющиеся одинаковые имена потоков, стеки исполнителей и т. д.)
- jcmd, jmap или jstat — как читать метрики GC и кучи
- Проверки на уровне ОС (ps -eLf, top, lsof), показывающие тенденции роста
- Любые Внутренние метрики DolphinScheduler для включения
- Руководство по постоянному исправлению / исправлению
Существуют ли безопасные обходные пути (ограниченные пулы, исправленные) исполнители, перехватчики очистки задач) до тех пор, пока не будет выпущено вышестоящее исправление?
- Управление кучей JVM
- Рекомендуемые соотношения для -Xms, -Xmx и -Xmn
- Оптимальный алгоритм/флаги GC в OpenJDK 11 для рабочих нагрузок, чувствительных к задержке
- Как определить размер стека потоков (-Xss) по сравнению с кучей, чтобы уменьшить нагрузку на память
Я могу прикрепить:
- Полные журналы сборщика мусора (gc.log)
- дампы потоков jstack (работоспособное и состояние утечки)
- Образцы количества потоков (ps -eLf | wc -l)
- Полные журналы рабочих процессов и файлы конфигурации
Убедиться, что основной причиной действительно является утечка потока, проверить план устранения последствий и получить основанные на фактах рекомендации по настройке и диагностике JVM.
Мы будем очень признательны за любую авторитетную документацию или примеры команд.
Подробнее здесь: https://stackoverflow.com/questions/797 ... cpu-21k-th
Мобильная версия