上周产线反馈SolidWorks频繁弹“无可用许可”,采购却说预算冻结。我蹲机房两小时,没买新授权,把利用率从42%硬拉到95%。
这篇记录的是我们在客户现场实打实跑通的一套回收策略,适用于FlexNet发布的CAD/CAE环境,看完你能直接照着配。
现场巡检时,我们常看到这些画面:
| 软件 | 采购许可数 | 峰值在线人数 | 实际活跃操作率 | 闲置超30分钟占比 |
|---|---|---|---|---|
| SolidWorks Premium | 45 | 41 | 42% | 51% |
| ANSYS Mechanical | 18 | 16 | 38% | 63% |
| AutoCAD | 60 | 57 | 46% | 44% 没人故意浪费,但FlexNet默认不会主动踢人,只要TCP不断,license就一直被占。 |
想治,得先懂它怎么算“占用”。
管理员缺可视数据 很多人只看lmstat -a,只能看到“谁占了”,看不到“占多久没动”。 
下面是我们现场落地的标准操作流程,已在十余家制造企业跑稳。
登录License Server,进入FlexNet安装目录,一般路径类似:
C:\Program Files\Flexera Software\FlexNet Publisher\utils
执行:lmutil lmstat -c 27000@licensesvr -a > license_20251108.log
打开日志,重点看三列:
用户名、HOSTNAME、CHECKOUT时间。
再配合Windows事件,看最近键盘鼠标输入:quser
输出里IDLE TIME超过0:30的,就是第一批回收对象。
【避坑指南】别直接按log里的用户名踢人,先核对是否跑批处理任务,仿真节点常挂后台。在options文件里做精细化控制,比直接改license文件安全。
编辑 sw_d.opt(SolidWorks为例):
TIMEOUTALL 7200
MAX 40 SW_PREMIUM USER_GROUP designers
含义很直接:GROUP designers zhangs wangl cheny
GROUP simu_node node01 node02
RESERVE 8 SW_SIM USER_GROUP simu_node
这样仿真节点永远保底8个,不会被设计岗挤爆。
【专家提示】TIMEOUTALL别低于3600,否则大装配体卡顿保存时会误杀,投诉电话能响半天。
光靠FlexNet不够,我们在server端加了个轻量探活。
每10分钟跑一次,判断client端是否真有人:
for /f %%i in (hostlist.txt) do (
psloggedon.exe \\%%i | find "DOMAIN"
if errorlevel 1 (
echo %%i no user >> idle_hosts.txt
)
)
然后联动lmutil,只针对idle_hosts里的会话执行:lmutil lmremove -h vendor user host display
我们只移“锁屏+无RDP+无键鼠”的会话,生产环境跑了三个月,零误伤。刚推回收,设计部会紧张,怕做一半被踢。
我们在内网挂了个状态页,显示:
单次拉升不难,难的是半年后还能维持。
我们给客户配了一套轻量监控,核心是三条:
每日利用率快照 早9点、午13点、晚21点各取一次lmstat,算出活跃/总许可比值。 问:设置了TIMEOUTALL,为什么还有人占着不走?
有些软件版本会缓存本地授权,比如旧版SolidWorks 2022 SP1,需升级到SP3以上才完全响应TIMEOUT。先查客户端版本号。
问:ANSYS这种跑计算的,会不会被误回收?
会,所以我们从不全局套TIMEOUTALL。ANSYS单独用RESERVE保底,再配合solver进程检测,有ansys.exe CPU>5%就不踢。
问:外包人员走了,账号删了,许可还在?
这是FlexNet的经典坑。账号删了但会话没断,必须lmremove手动清,或重启vendor daemon才能释放。