Appearance
SWB 附录 E:网络问题排障
来源:
swb_ug.pdfAppendix E(W-2024.09) 原文标题:Troubleshooting Network Issues说明:本页按 2024 版附录 E 的原顺序整理,尽量完整保留防火墙、容器、诊断工具和网络排障流程的含义。
附录说明
本附录说明如何诊断那些会影响 Sentaurus Workbench 组件通信的网络问题。它的关注点不是单个项目本身,而是 SWB 分布式通信基础设施能否正常工作。
原文围绕四个实际场景展开:
- 主机位于严格防火墙之后
- SWB 运行在容器中
- 需要使用
swbdiag检查网络与环境 - 需要读取诊断报告并归类错误
在防火墙后配置 SWB
手册先解释了 SWB 的通信方式:Sentaurus Workbench 的通信架构依赖 TCP 端口在进程之间发送消息。它没有预定义固定端口号,而是会从当前未被其他进程占用的 TCP 端口中选择可用端口。
这会在严格防火墙环境里带来问题。对某些 Synopsys 用户来说,主机可能只开放了极少数 TCP 端口,其余端口全部被关闭,结果就是 SWB 无法正常建立消息通信。
如果你处在这种环境中,手册建议的处理步骤是:
- 联系企业 IT,拿到允许使用的 TCP 端口列表。
- 用环境变量
SWB_PORTS_RANGE把这些信息告诉 SWB。
手册说明,SWB_PORTS_RANGE 的值是一个逗号分隔列表,每一段既可以是单独端口,也可以是端口范围。原文给出的示例如下:
bash
setenv SWB_PORTS_RANGE 40000-40010
setenv SWB_PORTS_RANGE 40000-40010,40020,40050-40060
setenv SWB_PORTS_RANGE 30000,4000,40100,40200,40300当 Sentaurus Workbench 需要打开一个 TCP 端口时,它会在给定范围中查找,并取第一个空闲端口。
端口数量估算
手册还给出一个用于估算单台主机所需 TCP 端口数量的公式:
text
Nports = 1 + Nswb + Nprojects其中:
Nswb是该主机上运行的 SWB 会话数Nprojects是这些 SWB 会话中同时启动运行的项目数
这意味着端口需求不只是和“开了几个 SWB 窗口”有关,也和“同时运行了多少项目”直接相关。
在容器中运行 SWB 时的配置
附录 E 下一节讨论容器环境。
手册说明,Sentaurus Workbench 在尝试于两个主机之间建立 socket 连接之前,会调用 Linux 的 ping 工具检查远程主机可达性。
而在容器里,这个 ping 调用可能不被允许。如果发生这种情况,你会在高级调度日志里看到类似报错。原文示例如下:
text
swblm::RequestDaemon request failed (attempt #0): Cannot establish a
socket connection to a listener at host.domain.com, port 41435: Error
IPv4: couldn't execute "ping": not owner如果问题根源正是“容器里不能执行 ping”,手册给出的解决办法是:显式告诉 SWB 不要再调用 ping。
对应设置如下:
bash
# For C shell:
setenv SNPS_CONTAINER 1
# For Bash shell:
export SNPS_CONTAINER=1这个设置会强制 Sentaurus Workbench 跳过 ping 调用。
Sentaurus Workbench 诊断工具
手册接着引出 Sentaurus Workbench Diagnostics Tool,也就是 swbdiag。
原文解释了它存在的背景:Synopsys 用户工作的分布式环境差异很大,网络问题或环境变量配置错误都有可能影响 SWB 的运行。
对已有问题案例的调查表明,很多异常并不是 SWB 本身的逻辑问题,而是操作系统配置或网络环境的差异引起的。手册举出的典型例子包括:
- 主机的 TCP 端口被关闭
- 主机 A 无法通过
ping看到主机 B - 网络延迟很高
swbdiag 的目标,就是检查给定的两台或多台主机上,SWB 基础设施能否正常运行,从而让用户能在本地尽快修复这些问题。
排查 SWB 网络通信
要测试并调试 SWB 通信架构里可能存在的问题,手册明确指出:必须运行 Sentaurus Workbench Diagnostics tool。
它是一个 batch 工具,用于检测并处理工作环境中那些会影响 SWB 行为的特定问题。原文特别指出,它主要检查两件事:
- Sentaurus Workbench 基础设施能否在两台或多台主机之间正常通信。
- SWB 环境变量
STDB是否设置正确。
基础设施通信检查的详细步骤
对第 1 项,也就是主机间通信检查,手册给出了更细的执行过程。
给定一组机器后,工具会遍历各种主机组合,做法是:先在其中一台机器上启动 swblm 守护进程,再让其余机器依次尝试去 ping 它,并在 ping 成功后进一步尝试连接这个守护进程。
原文把步骤写成了下面的顺序:
选定一台机器作为 server,用来承载
swblm守护进程并接受连接。终止该主机上之前已经存在的
swblm实例。
这一点也可以通过在任意主机上执行下面命令实现:bashswblm -cleanup按下面方式启用
swblm的高级日志:bashsetenv SWBLM_ADVANCED_LOG 1启动一个新的
swblm守护进程。检查
~/.swb/swblm/<release>/swblm.conf文件是否存在。遍历其余机器,并对每台机器执行: a. 连接到这台被选中的 client 机器。
b. 从 client 机器pingserver 机器。向 server 机器上的
swblm守护进程发起连接请求。返回第 1 步,继续下一轮。
这套流程说明,swbdiag 做的不是单纯“测一个端口”,而是完整模拟了一遍 SWB 分布式通信链路。
限制与前提假设
手册随后列出了一些边界条件和假设。
不检查主机名合法性
swbdiag 不会检查主机名本身是否合法。它假定你传入的主机名已经符合系统规则。
运行测试前必须关闭整个 SWB 基础设施
做这类测试时,整个 SWB 基础设施都必须停下来,因为测试过程中需要重启 swblm 守护进程。
手册明确要求:
- 必须停止当前 release 下所有正在运行的项目
- 必须退出该 release 的所有 SWB 实例
远程检查要求静默连接
如果要检查远程主机,必须能够进行“静默远程连接”,也就是不需要密码或其他交互式认证。
手册也直接指出,这通常意味着你需要提前配置好无密码 SSH。相关说明见附录 F。
默认假设共享文件系统
手册还补充了一个重要假设:所有被检查的主机共享同一套文件系统,而这本身也是 SWB 运行时的默认假设。
使用方法
原文给出的启动命令如下:
bash
swbdiag [options] [HOSTS]可用选项
| 选项 | 含义 |
|---|---|
-h[elp] | 显示 Sentaurus Workbench Diagnostics tool 的使用帮助 |
-v[ersion] | 显示工具当前版本 |
-f[ile] | 指定一个包含待测试主机列表的文件。如果使用该选项,则命令行中额外给出的主机列表会被忽略 |
主机列表的两种提供方式
手册说明,主机列表既可以放在文件中,也可以直接写在命令行参数里。
原文示例如下:
bash
# 通过文件指定
swbdiag -f hosts.txt
# 通过参数直接指定
swbdiag hostA rsh:hostB ssh:hostC如果主机列表来自文件,那么它必须是纯文本文件,主机名之间可以用空格、制表符或换行分隔。
连接类型前缀
手册说明,swbdiag 接受 rsh: 和 ssh: 这两种前缀,用来显式指定连接到远程主机时采用的方式。
如果某个主机名前没有前缀,工具会把它视为本地主机。
报告与日志文件
手册最后说明了测试输出和报告文件。
屏幕输出与报告位置
swbdiag 会把当前测试步骤直接打印到屏幕上。
如果工具在第 1 项第 2 步里成功终止了之前存在的 swblm 实例,那么在测试结束后,还会生成一份报告并保存到:
text
~/.swb/swblm/<RELEASE>/swblm.test这个文件中的内容与屏幕输出完全一致。
报告的分隔方式
手册说明,这份报告的结构是有分隔规则的:
- 每个“SWB 基础设施检查”测试块,都会用两行由
#组成的分隔线包起来 - 每个“本地主机与远程主机之间的连接测试”,都会用一行由
=组成的分隔线分隔
环境变量检查结果
在测试最后,swbdiag 还会检查 SWB 环境变量。检查结果会打印在最后一对 # 分隔线之后。
手册给了两类典型结果:
如果变量状态可接受,通常只会看到类似消息:
text<Timestamp> - INFO: Checking variable <Variable under test>如果变量未设置,则会给出警告
错误汇总表
如果在 SWB 基础设施测试过程中发现错误,日志文件末尾会输出一张汇总表。手册说明,这张表会把错误归到以下类别中:
InitializationSWBLM could not be initializedRelease mismatchSWBLM release version mismatch or not foundConfiguration fileSWBLM configuration file not found or corruptedConnectionThese hosts could not connect to server/SWBLM or host does not exist
原文还给了一个汇总表示例:
text
Server Issue
us01acme01 SWBLM could not be initialized
cl01narf03 SWBLM release version mismatch or not found
cn04kung12 SWBLM configuration file not found or corrupted
us03acmerh05 These hosts could not connect to server/SWBLM or host does
not exist: * us03acmerh01,* us03acmerh02,* us03acmerh03这里 Server 一列表示:在该轮测试中,哪台机器承担了 swblm 守护进程宿主机的角色。
附录 E 的核心价值,是把“SWB 网络不通”这件事从模糊症状拆成几类可验证问题:
- 端口范围是否被防火墙拦住
- 容器里是否无法执行
ping swblm守护进程是否能正常建立- 主机之间是否能完成真实连接
STDB和相关环境变量是否设置正确
如果后面继续细化,这一页最值得再补的两块是:
- 加一个“最小排障流程”小节,把
SWB_PORTS_RANGE、SWBLM_ADVANCED_LOG、swblm -cleanup、swbdiag串成一个短流程 - 给错误汇总表再补一列“优先检查项”,把每类错误对应回环境变量、主机可达性或配置文件