导语:浮动许可回收机制就是让企业软件许可像网约车一样,谁用谁签出、用完或闲置即回池,别人接着用。靠 TIMEOUT、排队、lmremove 和借用到期实现零增购周转,不是破解,是 FlexNet/RLM 原生能力。
场景说明:企业买 30 个 CATIA 浮动许可,186 人轮班用。A 合盖去开会,许可不关;B 出差 borrow 7 天忘了还;C 只画草图却顺手签走 GSD 曲面模块。结果早高峰 30 个全红,有人登不上。
具体操作:
三种回池路径: 正常关闭:软件退出发 lm_release,最干净。 TIMEOUT 闲置回收:license 文件里写 TIMEOUT GSD 600,600 秒无心跳尝试收回。 强制回收:管理员跑 lmutil lmremove -c 27000@lic-srv -f GSD -h all 清僵尸。 场景说明:SolidWorks 设了 TIMEOUT 300,结果工程师切屏查邮件 6 分钟,回来草图弹“许可丢失”。
具体操作:
全局兜底:TIMEOUTALL 7200(2 小时),FlexNet 多数版本硬下限 900 秒(15 分钟),IBM 系产品下限也是 900。 按 feature 分级(写在 vendor 的 .opt 或 license 文件): TIMEOUT swstd 1800 TIMEOUT GSD 600 TIMEOUT ansys_para 7200关键细节:TIMEOUT 只看 lmgrd 心跳,不认鼠标键盘。NX/UG 这类裸开 TIMEOUT 600 会误杀 sketch 未保存会话,必须配合应用层闲置检测(键鼠+无活跃命令)才安全。 ANSYS ansyslmd 对 TIMEOUT 有 vendor 下限,实测 2024 R1 低于 7200 不生效,别硬压。 
场景说明:现场工程师点“借用 7 天”去客户现场,回来连网不点归还,许可在 lmgrd 眼里仍被远端 MAC 锁死,池子永久少一个。
具体操作:
license 文件缩借期,按组区分: GROUP field_users user_a user_b GROUP core_users user_x user_y BORROW 24 GSD USERGROUP field_users BORROW 0 GSD USERGROUP core_users每天凌晨 1:00 跑清理脚本: #!/bin/bash lmutil lmremove -c 27000@lic-srv -f GSD -h all lmutil lmremove -c 27000@lic-srv -f swstd -h all加入 crontab:0 1 * * * /opt/flexnet/clear_borrow.sh 备选:业务低峰 lmdown -c /opt/flexnet/license.dat 再起服务,所有 borrow 失效(客户端下次启动重连)。 场景说明:9:30 池满报 -4,342,用户连点三次全失败;14:00 后 40% 空闲。
具体操作:
在 feature 行加 QUEUESIZE,按并发数 30% 给: FEATURE swstd flexnet 2024.12 31-dec-2026 32 QUEUESIZE=10客户端拉高 FLEXLM 超时,VPN 环境必设: Windows 环境变量 FLEXLM_TIMEOUT=3000000(微秒,≈3 秒;Autodesk 官方建议 1000000 起步,慢网用 5000000)。 Linux/macOS 写进 ~/.flexlmrc 或启动脚本。 
场景说明:采购说“CATIA 满负荷,加 10 个”,你拉日志发现凌晨 2 点还有 19 个挂离职员工笔记本上。
具体操作:
每小时快照,连跑 14 天: */60 * * * * lmutil lmstat -a -c 27000@localhost > /opt/logs/lic_$(date +\%F_\%H).txt筛僵尸:start time 早于当天 8:00 且 hostname 不在 AD 最近登录列表。 算有效利用率:活跃秒数 / 签出秒数,活跃信号取 GPU>5% 或键鼠事件+前台窗口。 | 报错 / 现象 | 根因 | 修复操作 |
|---|---|---|
| FLEXnet error -15,570 / -15.570.0 | 客户端默认超时 0.1s,VPN 多跳握手不完;或 27000–27009 / 2080 被防火墙拦;lmgrd 没起 | 客户端设 FLEXLM_TIMEOUT=3000000;telnet lic-srv 27000 验端口;服务器 lmgrd -c license.dat 确认进程;检查 license 文件 SERVER 行 MAC/IP 是否随网卡变更 |
| -4,342 / No available licenses | 池真满 或 僵尸占用假性饱和(约 40% 是后者) | lmutil lmstat -a 看谁占;lmremove -h feature server 27000 handle 清断线会话;临时加 TIMEOUTALL 3600 |
| License lost / not available 切屏回来弹窗 | TIMEOUT 误杀活跃会话,或 VPN 心跳断 3 次 | 普通 feature 超时调到 1800s+;NX/SolidWorks 改应用层闲置检测(键鼠+无命令)再回收;客户端 FLEXLM_TIMEOUT 拉到 5s |
| borrow 出去 7 天不回池 | 默认 BORROW 期限过长,无人点归还 | license 改 BORROW 24;凌晨 lmremove -h all 清场;离职账号 AD 禁用当天触发回收脚本 |
| lmremove 报 feature/user/host/display not found | 用了第一种语法去清 token 型许可(TLSTOK/Synergy 等) | 换第二种语法:lmutil lmremove -c 27000@host -h <feature> <server> 27000 <handle>,handle 从 lmstat -a 括号里取 |
注:各 vendor daemon(ansyslmd、ugslmd、sw_d)对 TIMEOUT 下限和 BORROW 粒度有差异,改前先 lmstat -a 看 vendor 行版本,再动 license 文件;ANSYS 2024 R1 实测 TIMEOUT 硬下限 7200s,NX 裸 TIMEOUT 不认键鼠需配应用层检测。