先说个场景,你大概率见过:周一早上研发群里炸了,"MATLAB 打不开,报 License Error 4"。IT 一查,30 个并发 key 全占满,但对着座位表数了一圈,真在用的人不到十个。
再换个场景:财务转来一封邮件,MathWorks 的 License Compliance Audit 通知,说要派第三方审计公司进场,让你提供部署清单。这时候你才发现,三个子公司各买各的,有两套还是当年找高校代买的"学术版"。
这两件事本质是一件事:你买的从来不是 MATLAB 这个软件,而是一组带严格约束的使用权,你真正踩的坑,是"权利"和"实际使用"早就对不上了。
MathWorks 桌面产品只有四种部署选项,别搞混:
麻烦就出在这:大多数企业是"按部门人头报预算、采购一拍脑袋下单",但真实使用是并发波动的。买的维度和使用维度压根不是一回事,再加上没人看数据,三五年下来必然错位。
最常见。一个组五个人,采购为了省钱买两套 Individual,谁用谁登。按条款这是非授权用户使用,是 MathWorks 点名的违规形态之一。Designated Computer 更狠,装在机房服务器上大家远程桌面连进去用——条款直接写了不允许远程访问。
后果不止是补钱。EULA 第 20 条写明:如果审计发现的不合规"本可以通过多付许可费避免",你要按当时价目补足;而且如果少付金额超过该期间已付费用的 5%,连审计本身的成本也得你承担。
人下班了,MATLAB 没关,key 还挂在他名下。或者脚本跑完没 exit,后台进程还握着句柄。
这里有个硬知识必须记住:TIMEOUT 只能配 4 小时起,14400 秒是 MathWorks 锁死的下限,你写小了它也按 4 小时算。而且 TIMEOUT 只对 MATLAB 生效,toolbox 是跟着 MATLAB 一起被回收的,你不能给某个工具箱单独设超时。不配会怎样?一个周五晚上挂着的会话,能占着 key 到下周一。
这几个是最贵的雷。学术版用于商业开发、许可主体区域外的团队使用、外包人员和实习生混进池子——全是 MathWorks 明文列出的不合规形式。它家专门有 License Compliance Team,还加入了 BSA,审计由独立第三方公司执行。别抱侥幸心理。
维护服务(SMS)一断,续回来要补缴断保期间的 back maintenance,外加一笔相当于年度 SMS 费用 25% 的 reinstatement fee。这一刀很疼。
NNU 名单更常见:人离职两年了,用户名还在 options 文件里,采购续费时照着旧名单买单。
多版本混池最阴:你池子里有 2 个 R2024b、3 个 R2021a,结果 5 个人都在用 R2021a 及更早版本,第 3 个想用 R2024b 的人照样吃 Error 4。

三张表对账,这是底线动作:
采样别只采一次。写个 cron,每 10 分钟跑一次 lmutil lmstat -a,把输出落盘。注意:license manager 日志默认每次重启会被覆盖,必须先改成 append 模式,否则历史数据全丢。
跑满一个月,你要的是三个数:峰值并发、日均占用时长、拒绝次数(denial)。
① 开 TIMEOUT。 在 matlabroot/etc/$ARCH/MLM.opt 里加 TIMEOUT MATLAB 14400,并确保 license.dat 的 DAEMON 行带 options= 指向这个文件,改完必须重启 license manager 才生效。
② 客户端用 USE_SERVER。 客户端的 license 文件里只留 SERVER 行 + USE_SERVER,别把整份 full license 文件放客户端——R2017a 上这个会导致 TIMEOUT 失效。
③ 用 options 文件治"钉子户"。 MAX n 限制单个用户最多占几个 key,RESERVE 给关键岗位留位,EXCLUDE 挡掉不该用的人。这些语句零成本,效果立竿见影。
④ 治本:脚本结尾加 exit。 批量任务用 matlab -batch 或 -r "...; exit",让批处理跑完自己还 key。这条要写成规范推给研发,比什么都管用。
⑤ 关于 lmremove: 别指望它。MathWorks 这套 FLEXnet 实现里 lmremove 经常不生效,想强制回收,最稳的还是让客户端退出,或者在低峰期重启 license manager。
自研脚本 + Grafana 能解决 70% 的问题,成本就是人力。如果组织大到跨地域、多站点、要按项目做成本分摊(chargeback),再考虑商业工具,比如 Open iT 的 Analyzer for MathWorks Licensing、OpenLM、Flexera FlexNet Manager 这类。
| 方案 | 成本 | 见效周期 | 效果 | 适用场景 |
|---|---|---|---|---|
| lmstat 定时采样 + 自研报表 | 几乎零(人力 1~2 人日) | 1 个月出数据 | 看清真实使用率,为采购提供依据 | 所有企业,必做第一步 |
| MLM.opt 配置优化 | 零 | 当天生效 | 消灭僵尸会话,池子立刻"变大" | 所有 Concurrent 用户 |
| 使用规范(exit、禁远程、禁共享) | 零,但需要推行力 | 1~2 个月 | 治本,但依赖研发配合 | 有一定 IT 治理能力的企业 |
| 采购策略调整(缩池/裁剪/合并) | 负成本(省钱) | 下一个续费周期 | 直接降低年度支出 | 有 1 年以上摸底数据的企业 |
| 商业许可管理工具 | 数万至数十万/年 | 1~3 个月部署 | 跨站点、按项目分摊、自动回收 | 50+ 用户、多站点、需 chargeback |
某汽车零部件企业(不点名),研发约 120 人,实际用 MATLAB 的 40 多人。历史包袱:30 个 Concurrent MATLAB key、18 个 Simulink、11 个常用工具箱,分散在 4 个 license 号下,年 SMS 支出 60 多万。
摸底一个月的原始数据很打脸:
动作:配 TIMEOUT 14400 → 推 exit 规范 → options 文件加 MAX 治两个钉子户 → 4 个 license 合并为 1 个 Master License → 续费时砍掉 6 个 MATLAB key、2 个 Simulink、4 个零调用工具箱。
一年后:
最讽刺的是:他们一直以为要加购,实际是买多了还用不上。
给你一个明确的行动顺序,别跳步:
别再靠"研发说不够用"来决策采购了。先拿数据说话,再谈钱。 绝大多数"许可不够"的抱怨,最后查出来都是配置问题,不是数量问题。