昇腾社区首页
中文
注册
开发者
下载

部分rank未连接到server节点

在CANN日志中存在关键字"topo exchange server get socket timeout!"或"Failed to connect agent"。

  • server节点问题现象:
    [ERROR] HCCL(10261,python):2025-09-11-01:20:11.205.229 [topoinfo_exchange_server.cc:113] [57044][Get][Connection]topo exchange server get socket timeout! timeout[720 s]
    [ERROR] HCCL(10261,python):2025-09-11-01:20:11.205.296 [topoinfo_exchange_server.cc:240][57044][TopoInfoExchangeServer][DisplayConnectedRank]total connected num is [15],line num is [2]
    [ERROR] HCCL(10261,python):2025-09-11-01:20:11.205.304 [topoinfo_exchange_server.cc:253][57044][TopoInfoExchangeServer][DisplayConnectedRank]connected rankinfo[LINE 0]: [0000000000000000],[0000000000000001],[0000000000000002],[0000000000000003],[0000000000000004],[0000000000000005],[0000000000000006],[0000000000000007];
    [ERROR] HCCL(10261,python):2025-09-11-01:20:11.205.308 [topoinfo_exchange_server.cc:253][57044][TopoInfoExchangeServer][DisplayConnectedRank]connected rankinfo[LINE 1]: [0000000000000008],[0000000000000010],[0000000000000011],[0000000000000012],[0000000000000013],[0000000000000014],[0000000000000015];
  • agent节点问题现象:
    [ERROR] HCCL(350697,all_reduce_test):2025-10-23-14:56:18.215.877 [topoinfo_exchange_base.cc:119] [350697][Recv][ClusterInfoMsg] TopoDetect ERROR occur !!! fault_type[1], fault_info["Failed to connect agent[9,]"]
    [ERROR] HCCL(350697,all_reduce_test):2025-10-23-14:56:18.215.964 [topoinfo_exchange_agent.cc:534] [350697][Verify][ClusterInfo]rank num[4] is different with rank list size[3] in total topo rank info.

问题根因

server节点在调用HcclGetRootinfo接口后会拉起一个背景线程等待所有的rank来连接,直到超时时间为止。因此若在超时时间内,通信域的所有rank没有成功连接到server线程,server线程会等待超时报错。同时server线程在超时报错后会打印出当前已连接的rank列表,便可根据该信息找到未连接成功的rank,再进一步排查对应rank未能成功连接的原因。

定位思路

图1 部分rank未连接问题定位思路
  1. 从报错信息中确认未连接的rank。
    • server节点:当server节点等到超时后,会打印出已连接的rank信息,由于通信域内的rankId顺序为[0 ~ rankSize-1],可以从已连接的rank信息中计算出未连接的rank,如上面的日志用例中缺失了rank9的连接,因此需要进一步排查rank9未连接的原因。
    • agent节点:对于连接成功的agent会在server节点超时后收到server节点扩散的集群未连接rank报错信息,因此可以直接根据报错信息中的“Failed to connect agent”确认未连接的rank,并进一步确认对应rank未能成功连接的原因,如上面的日志用例中表明缺失了rank9的连接,因此需要进一步排查rank9未连接的原因。
  2. 确认未连接rank是否有下发通信域创建接口。

    由于HCCL在通信域创建时在CANN日志的run目录有默认的日志记录打印,因此可以在整个集群的日志下过滤是否有对应rank的通信域下发,如执行如下命令,过滤是否有rank9的通信域创建下发记录,若有多个通信域可能会多行日志记录,可根据日志中的"identifier"通信域名确认是否为同一个通信域:

    grep -r "Entry-HcclCommInitRootInfoInner" | grep "rank\[9\]"
    • 若对应rank下发了通信域创建接口,根据检索结果获取缺失rank所在的节点及进程号信息,再进一步根据缺失rank的CANN日志排查相关的报错日志信息
    • 若在集群日志中没有检索到对应rank的通信域创建接口下发日志,则需要从业务上排查该rank没有下发对应通信域创建接口的原因。