问题
研发工程师启动 Virtuoso 时,CDS.log 中出现以下警告,导致启动缓慢甚至卡住:
1
2
3
4
*WARNING* file /home/ben/CDS.log cls: Unable to connect to clsbd on host "rd-172-31-0-122.icinfra.cn".
Check if clsbd is running on the host. If the host is not valid remove
the ".cdslck" lock file. The connect timeout length can be set using
the CLS_CLSBD_CONNECT_TIMEOUT environment variable.
原因
clsbd 全称 Cadence Locking Service Boolean Daemon,即”布尔守护进程”。它只做一件事:判断某个进程 PID 是否还活着,返回 yes/no。
触发机制如下:
- 之前有一个 Virtuoso/DFII session 在主机
rd-172-31-0-122.icinfra.cn上运行,退出时留下了.cdslck锁文件(如~/CDS.log.cdslck)。 - 新 session 启动时,Cadence CLS 尝试联系该主机上的 clsbd,确认原进程是否仍存活。
- 如果联系不上(主机下线、hostname 无效、clsbd 未运行),就报此警告。
- CLS 出于保守策略,不会自动释放锁,因此可能造成启动卡顿。
主机名 rd-172-31-0-122 的命名规律表明这是一台动态分配的节点(私有 IP 172.31.0.122),很可能已被销毁或重建,锁文件是遗留物。
解决方案
方案一:删除孤立的 .cdslck 锁文件(最常用)
1
2
3
4
5
6
7
8
9
# 确认锁文件位置
ls ~/CDS.log*.cdslck
# 用 clsAdminTool 安全清除(推荐)
clsAdminTool -asre ~/CDS.log
clsAdminTool -asre ~/CDS.log.1 # 如有多个,依次处理
# 或直接手动删除
rm ~/CDS.log.cdslck
clsAdminTool -asre 只移除该文件的编辑锁,比 -are 更精准(后者会递归处理整个目录树,耗时较长)。
方案二:确认目标主机上 clsbd 是否运行
如果那台主机仍然有效,登录上去检查:
1
2
3
4
ps aux | grep clsbd
# 如未运行,手动启动
$CDSHOME/tools/bin/clsbd &
方案三:缩短连接超时,避免长时间卡顿
默认超时很长。可以设置环境变量让它更快放弃:
1
2
3
4
5
# bash/zsh
export CLS_CLSBD_CONNECT_TIMEOUT=5
# csh/tcsh
setenv CLS_CLSBD_CONNECT_TIMEOUT 5
建议将此变量写入 site 级别的环境脚本(如 /etc/profile.d/ 下的公共配置),避免用户每次手动设置。
总结
| 情形 | 解决方法 |
|---|---|
| 原主机已下线/销毁 | 直接删除 .cdslck 文件,或用 clsAdminTool -asre |
| 原主机存在但 clsbd 未运行 | 在目标主机启动 clsbd |
| 不确定,只想加快启动 | 设置 CLS_CLSBD_CONNECT_TIMEOUT=5 |
参考
- Cadence ASK: Stranded lock recovery takes very long time if remote machine is not available (a1Od0000000nanBEAQ)
- Cadence ASK: Unable to Launch virtuoso session due to locked CDS.log files (a1Od0000000uu9tEAA)
- Cadence Application Infrastructure User Guide — Cadence Locking System / Boolean Daemon (clsbd)