每天早上九点半在研发群里发"请各位关闭空闲的 CATIA/NX 释放许可",@ 不到三分钟,设计主管在群里怼回来"我在画图怎么就空闲了"——这剧本 IT 管理员谁没演过。喊了半年,占用率一点没降,研发还嫌你烦。这件事靠嘴没用,得靠规则,规则又得靠先看懂数据再动手。
先搞清原理,别上来就敲命令
许可占用是客户端向许可服务器发起 checkout,许可服务器记录"谁、在哪台机、用哪个模块、占多久"。问题出在释放环节:正常退出会 checkin,但人挂机、锁屏、合盖、软件崩溃,这些场景不会触发 checkin,license 服务器侧看还是"已占用"。FlexNet 心跳间隔长,服务端可能几个小时都发现不了客户端掉线,DSLS 默认压根不做自动空闲回收,SolidWorks 的 SNL 配 TIMEOUT 经常没效果——CAD 软件保活机制太勤快,配置写了等于没写。所以真正可行的回收分两条路:一条是服务器侧的 TIMEOUT 参数(FlexNet options 文件里配 TIMEOUTALL 1800 这种),靠 TCP 会话静默判断,能踢僵尸但分不清真忙和真闲;另一条是应用层空闲识别,靠键鼠 idle 加活跃命令识别,配上"先提醒、再倒计时、后回收"的三段式节奏,误伤率能压到很低。
动手前的三件事
许可服务器日志里能不能区分真空闲和假空闲,这是前提。FlexNet 体系下 lmstat 拉出来的占用信息只有 start 时间和心跳状态,看不出键鼠活动;DSLS 的 usage log 是私格式,能解析出来才有得谈;AutoCAD 那套原生 adskflex.opt 只有 TIMEOUT,做不了 UI 层判断。哪些软件可回收、哪些禁止中断(CAE 求解、批处理脚本、大装配 REGEN 中),得先列清单标成"已确认、待确认、不适用",别一刀切。
通知和升级路径也得提前设计:用户被收了知道吗、找谁恢复、重新申请走什么流程。这些不铺好就上线,等着挨骂。
三段式节奏怎么走
先上空闲提醒,只提醒不回收,跑两周。看到的占用数据和真实操作数据的差距会让你震惊——通常能虚高 30% 到 50%。等误判样本积累够了再开灰度回收,普通流程和例外流程分开走,白名单留给审图专机、CAE 求解机器、跑 LISP 和批处理的节点。每次回收动作留版本号和理由,回头审计要拿这个说话。
阈值别一刀切。NX 基础模块 20 分钟稳,GSD、CAM 这种稀缺模块可以压到 15 分钟,纯看图机 10 分钟够用。低于 10 分钟就是给自己找投诉。

盯四个数
提醒后主动释放率、自动回收量、误回收率、人工干预次数。每个都留分子分母和下钻明细,能下钻到人、到会话才有解释力。误回收率连续两周超过 1% 就说明阈值或算法有问题,先回退再调参。
几个常见的坑
阈值一刀切。NX 和 AutoCAD 场景不一样,看图机和建模机不一样,统一设 15 分钟必出事。没白名单就上自动回收,CAE 求解被踢掉的代价可比省下的许可费高多了。没预留"回收后自动重获"机制,用户回来发现许可没了还得重新走申请流程,研发的怨气能把 IT 群炸了。
一个真事
某建筑设计研究院,AutoCAD 2026 浮动包 ×18,早高峰 08:50–10:20 排队 9 人左右。抽样三天数据发现 34.7% 的占用超 18 分钟无键鼠活动,开图去看现场、锁屏去开晨会、最小化刷网页全算占用——按这个比例算,6 个多包常年假忙,等于白瞎了三分之一容量。原生 adskflex.opt 只有 TIMEOUT,做不了 UI 层判断,最后上了旁路许可调度网关 + 轻量托盘,按键鼠 idle 做判定,大图加载和 LISP 执行期间自动加保护标记,AutoCAD 设 10 分钟、TrueView 设 8 分钟。跑四周下来:日均回收 5.8 次/包,早高峰等效从 18 个包顶出 27~28 个有效吞吐,排队从 8.7 人降到 0.6 人,全池利用率从 51% 拉到 84%。CFO 看完报表直接打回新增 6 个包的采购申请,只批了 1 个热备。最关键的是预留了"回收后自动重获"——idle 用户回来动鼠标,后台自动重取同 feature,平均 1.9 秒,设计师根本察觉不到。