汽车研发中心管 CATIA 和 NX 的许可,跟一般 IT 管 Office 完全两个物种。造型那边开着 ICEM Surf 拉 A 面,结构那边挂着 MD2 改钣金,仿真那边 CAE 前处理脚本跑一晚上不关软件,制造那边 DMU 审图只看不画——这四拨人对模块的需求根本对不上,但他们都从同一池浮动 Token 里往外掏。你按“部门汇总需求”去买,永远买不准;你按“总并发不够”去扩,扩完发现高峰期该排队还是排队。
这就是为什么很多研发中心的许可数据“看起来有,但用不起来”。
先说清楚这东西的性质。 CATIA 走的是达索的 DSLS(Dassault Systèmes License Server),NX 走的是西门子 FlexNet/SPLM。DSLS 有个很坑的机制:offline borrowing,用户可以把 license 借到本地离线用,借出去的 Token 在标准监控里是不可见的,池子里显示被占了,但你不知道是谁、在干什么、什么时候还。更常见的是 crash 之后 license “挂”在服务器上不释放,得人工去 lmremove 踢,不踢就一直占着。DSLS 的消费单位是 “Trigram”(功能码),你不拿工具解码,对着日志根本分不清哪个是 GSD、哪个是 HD2、哪个是仿真模块。
所以第一个要接受的事实是:你从 license server 界面上看到的“已占用数”,不等于“有人在用”。 这两者之间的差值,就是钱在漏。
“死锁”式占用。 有人早上到工位第一件事就是把 CATIA 开起来,把 GSD 和 MD2 一起 checkout,然后去开会、去看 PDF、去吃饭。某 800 人规模的车企研发中心排查时发现,有一个 CATIA 机械设计模块的许可证被连续占用了 37 天,中间那个人根本没画图。这不是个别现象,是文化问题叠加技术问题。
模块混池,结构工程师“顺带”吃掉曲面组的饭。 CATIA 启动时默认会加载一批非必要模块,很多结构工程师不知道自己已经 checkout 了 GSD 甚至 FreeStyle。曲面组那边排大队,这边池子里躺着用不上的高级模块。NX 同理,Teamcenter 集成环境里 license 请求路径更长,排队感知更钝。
CAE 前处理被误杀,或者反过来,真干活的人被踢。 原生 FlexNet 的 TIMEOUT 只认“有没有心跳”,分不清“键鼠没动但 NX 刀路正在算”和“人真的去抽烟了”。设短了误杀,设长了等于不回收。DSLS 默认不自动回收闲置会话,很多人不知道可以在 dslsadmin 里设 Inactivity Timeout。
离线借用变成“幽灵池”。 外场工程师借出去的 CATIA 授权,回到办公室也不还,池子里长期少几把 Token,采购端看着“不够用”又去申请加购。

第一件事,跑 lmutil lmstat -a 或者直接拉 DSLS Admin 的 Usage Log,连续两周,不要只看一天。 你要拿的不是“峰值并发”一个数,而是三样东西:谁、在哪个机器上、checkout 了哪个模块、持续了多久、中间有没有键鼠活动。没有键鼠活动和模块持有时间做交叉,你分不清“忙”和“占”。
第二件事,把模块拆开看,不要看“CATIA 总并发”。 造型团队真正稀缺的是 ICEM Surf 和 FreeStyle 这类 A 面模块,结构团队要的是 MD2/HD2,仿真前处理可能只需要 Viewer 或轻量 DMU。NX 那边同理,Simulation 求解模块和普通建模模块在 FlexNet 里是不同的 feature,混在一起看利用率就是一笔糊涂账。
第三件事,把 AD 里半年没登录的域账号拉出来,和 license 绑定列表对一遍。 离职账号、调岗账号绑着 license 不放,是最便宜就能清掉的一层浪费。
DSLS 超时先设起来,但分模块设,不要一刀切。 基础建模模块(MD2/HD2)20 分钟无 GUI 操作释放;高级曲面和仿真模块设短一点,15 分钟,因为贵。设之前跟研发主管打个招呼,客户端弹一个“即将回收,请保存”的提示,别静默硬踢,挨骂的是你。
拆池。 把通用包和专用模块拆成独立的 license pool。结构工程师的 CATIA 启动配置里取消自动加载 GSD 和 FreeStyle,谁真需要谁自己去 checkout。NX 那边用 FlexNet 的 MAX/GROUPCNT 做分组配额,把仿真求解的 Token 和普通建模的 Token 在逻辑上隔开。
白名单必须有,但只加真正不能动的人。 跑大装配的老法师、CAE 脚本循环的前处理节点、审图专用终端,这几类机子设成 exclude from idle release,idle 再久也不收。但白名单走审批,IT 录、主管签,季度复审一次,调岗离职的机器移出去,别让白名单变成新的“死锁池”。
NX 的 SPLM_NAMED_USER 和浮动要分开算账。 核心设计团队每天八小时泡在 NX 里,用 named user 比让他们每天早高峰抢浮动更稳;CAE 和偶尔用的角色走浮动。这不是技术问题,是采购结构问题,但前提是你有上面的模块级使用数据,否则采购不会认。
手工用 lmstat 加 Excel 能跑通前两周的摸底,但撑不过一个完整的车型项目周期。你需要的是一个能旁路解析 DSLS 和 FlexNet 报文的监控层,不装 agent,不影响 license server 本身。它要做的事很具体:解码 DSLS 的 Trigram 成人话、追踪 offline borrowing 的归还时间、区分“空闲”和“在算”、到点静默发 lmremove 而不是硬断。市面上 OpenLM、浮点、莱曼特这类工具覆盖的场景都差不多,选哪家看你和现有 license server 版本的兼容性。但工具只解决“看得见和收得回”,拆池策略、白名单审批、采购结构调整,这些是你自己做的,工具替不了。
华中一家整车厂,350 个 CATIA 用户,V5-6R2024 和 3DEXPERIENCE 2026 混跑,DSLS 管着 120 个浮动并发。优化前他们自己觉得“并发不够”,早高峰天天有人排队。拉了两周数据一看,峰值并发才 71/120,但日均闲置率 42%。问题很土:早九点一群人开 CATIA 占座不画图;GSD 被结构工程师长期 checkout 但调用记录几乎为零;还有离职账号挂着 license。他们干了三件事:DSLS 给基础模块设 20 分钟 inactivity timeout,给 GSD 设 15 分钟;把通用包和曲面模块拆池,取消启动自动加载;AD 清了一轮僵尸账号,发了个不画图请关 CATIA 的通知,设计主管带头。没加买半个授权,利用率从 58% 拉到 75%+,GSD 模块的日均等待次数从 17 次降到 2 次,拒绝率从 6.8% 压到 0.9% 以下。当然,新车发布前全员加班那种永久性峰值,该临时租 Token 还是得租,利用率挖潜替代不了真实扩容,这点得跟老板说清楚。