
ANSYS 许可合规性检查这件事说白了就是把你实际用掉的许可和合同里买到的授权逐条对上。做仿真的人大多有过这种经历某天早上打开 ANSYS Workbench弹窗拿不到 license找 IT 一问说是许可服务器正在跑审计再过几天采购发来邮件要你整理近半年的 ANSYS 并发使用记录。听上去像行政流程实际是硬核技术活——要读 license 文件、要盯 vendor daemon 的日志、要算并发峰值、还要能区分真的缺授权和配置写错了。这两者的处理方式完全相反前者要钱后者要时间。这篇内容写给三类人。管许可服务器的 IT 和运维能从这里拿到可直接抄的采集清单、命令和报告模板负责预算的技术负责人能看懂怎么用数据判断该不该加购一线仿真工程师看完至少知道碰到 failover feature ansys electronics_desktop is not available 这类报错时问题出在哪一层、该找谁、能自己先排掉哪些。全文围绕 ANSYS 许可合规性检查展开涉及的都是常规企业环境下的正常操作没有任何取巧捷径。1. 许可合规性检查到底在查什么1.1 检查的三个层面授权文件、服务端行为、客户端行为很多人以为合规检查就是数人头看有多少人在用。实际一层套一层至少三个层面要过一遍。第一个层面是授权文件本身。ANSYS 用的 FlexNet 体系license 文件里每一行 INCREMENT 或 FEATURE 都对应一个功能模块包含模块名、版本号上限、到期日期、授权数量、绑定的主机 ID、以及一段签名。检查动作是把文件里的模块清单拉出来和合同上的采购清单逐条比对看有没有对不上的。常见偏差有几种版本号写的是 2023 但团队已经装了 2024那 2024 根本起不来到期日早就过了但没人注意直到某天全员报错文件里混进了历史遗留的模块行虽然不用但看着可疑需要跟供应商核实来源还有一种是模块买少了比如只买了 2 个 HFSS 的并发但实际有 5 个人在用。第二个层面是服务端行为。许可服务器上跑着两个进程lmgrd 负责调度ansyslmd 是 ANSYS 的 vendor daemon真正发许可的是后者。要看的是进程有没有异常重启、日志里有没有 Invalid hostid、Expired、out of licenses 这类关键字、Debug log 是不是已经涨到几个 GB 拖慢写盘、端口有没有被防火墙影响、服务端机器本身的负载怎么样。这一层的问题往往表现为客户端随机报错而不是稳定报错排查起来最费劲。第三个层面是客户端行为。这一层最容易被忽略但恰恰是合规检查的价值所在。要确认的点包括客户端有没有指向正确的许可服务器环境变量有没有被本地文件覆盖、有没有人自己改了 license 文件路径、借用出去的许可有没有及时归还、有没有同一个账号在多台机器上同时跑求解器、有没有跨部门共用同一个许可池却没报备。这些行为会让服务端的统计数据失真让你算出来的峰值不能用。提示三个层面里授权文件的问题只能通过商务渠道解决技术手段排不掉服务端和客户端的问题基本都能自己处理。先分清楚属于哪一类能省下大量无用沟通。1.2 从热词里的报错反推不合规往往先以故障的形式冒出来搜索 ANSYS 相关问题时会看到大量看似零散的报错其实背后都指向许可合规。举几个常见的。failover feature ansys electronics_desktop is not available 和 failover feature ansys electronics_desktop is not available. no valid flex 这一类说明用户在尝试一个需要故障转移特性的模块但授权文件里没有对应的行或者行内容不完整。这不是配置能变出来的东西得看合同里有没有买。ansys motor cad 线圈设计没有 license是典型的模块级授权缺失。Motor-CAD 的线圈设计属于特定功能包主程序能开功能点开不了这种就要去核对模块清单看是买漏了还是安装的版本包不对。加载 ANSYS 时显示 connection timed out while reading data表面是网络问题深挖常常是许可服务器请求量陡增导致的响应超时。早上九点开工潮、一个大项目组同时提交任务都会触发。ansys license manager 安装显示文件夹错误、如何彻底卸载 ansys这两类属于环境治理问题。装不上和卸不干净会直接导致主机 ID 识别异常进而让授权文件失效最后演变成合规问题。ansys fluent 2024 计算中途能关电脑吗、怎么暂停表面是使用习惯问题实质是许可回收问题。客户端异常退出时服务端不会立刻把许可收回去这段时间里别人就用不了日志上还会留下一条长长的占用记录。查日志的人如果不了解这个机制很容易误判成有人在挂机占许可。我个人的判断标准很简单如果一个报错能让用户绕过正常授权流程继续用那就是合规红线必须处理如果一个报错只是让人用不了那就是技术故障排在后面。按这个标准过一遍你手上的工单优先级立刻就清楚了。2. 动手之前把许可资产和用量数据摸清楚2.1 授权文件、许可服务器与版本信息采集正式开始核查前先把家底抄一遍。这一步不用任何高级工具但漏项会导致后面返工。建议做成一张固定表格每次核查都从这张表开始填。信息项获取方式用途license 文件路径与副本服务端安装目录下的 Licensing 文件夹核对模块清单与到期日licensor 主机名与主机 ID服务端 ipconfig /all 或 getmac核对绑定的主机是否与文件一致lmgrd 与 vendor daemon 端口文件头 SERVER 行、服务配置客户端连接与防火墙放行vendor daemon 版本ansyslmd -v或服务属性里的可执行文件版本判断是否支持新版本模块各客户端 ANSYS 版本分布客户端安装目录、资产管理系统确认版本不超授权上限客户端环境变量ANSYSLMD_LICENSE_FILE、ANSYS_LOCK、LM_LICENSE_FILE确认指向未被本地覆盖当前并发使用快照lmutil lmstat -a基线数据关于环境变量优先级这是踩坑重灾区。三个变量里ANSYSLMD_LICENSE_FILE 是 ANSYS 专用的优先级最高LM_LICENSE_FILE 是通用的容易被其他软件写进去比如某些 CAE 工具或者开发环境。我遇到过一台机器 fluent 一直连不上许可最后发现是 LM_LICENSE_FILE 里塞了另一家软件的授权地址把整个解析顺序带偏了。核查时把三个变量都打出来看一眼花不了两分钟。主机 ID 这一项要单独强调。它一般取网卡的 MAC 地址但机器上往往有多个网卡——物理网卡、无线网卡、虚拟网卡、容器网卡。license 文件绑定的是生成授权时读取的那一个。装过虚拟机软件、改过网络配置、换过主板或者网卡驱动异常都会导致主机 ID 变化这时候旧授权直接失效。搜索结果里出现 MAC 为 ffffffff 这类情况基本就是读取异常或者网卡未启用处理顺序是禁用多余的虚拟网卡、确认目标网卡已启用且有有效地址、重新读取主机 ID、通过商务渠道换取新授权。别试图用改注册表的方式硬凑那属于破坏授权机制风险和麻烦都更大。2.2 用量日志并发峰值、借用记录与僵尸占用资产清单是静态的用量数据才是动态证据。采集方式很简单用 lmutil lmstat 定时打快照。Windows 上可以用计划任务Linux 上用 cron每 5 到 10 分钟跑一次把输出追加到一个按天切分的文件里。# Linux 示例放到 crontab 里每 10 分钟执行一次 # 注意把 1055licsrv01 换成你自己的端口和服务器名 LMUTIL/ansys_inc/shared_files/licensing/linx64/lmutil $LMUTIL lmstat -a -c 1055licsrv01 /var/log/ansys_usage/usage_$(date %Y%m%d).log 21采两到四周数据就够用了。接下来算三个数平均并发、峰值并发、百分之九十五分位并发。平均值决定你买得浪不浪费峰值决定你会不会被投诉P95 决定你实际该配多少。举个具体的账。假设团队有一百个有权限的人采样四周后平均并发 18峰值 34P95 是 28。现在手里有 30 个并发授权。利用率按平均值算18÷3060%看着还有余量。但高峰期有 34 个人要同时用就有 4 个人拿不到表现出来就是 out of licenses。这种情况要不要加购我的经验是看超限发生的频次如果一个月只有一两次、且集中在项目节点那用排队和错峰就能解决如果每周都有、还出现在工作时段那就该考虑加购到 P95 以上也就是 32 到 35 之间。高于 90% 的利用率意味着常态化排队低于 50% 意味着钱在睡觉。还有两个容易忽略的维度。一个是借用记录。许可借用是把池子里的授权临时搬到客户端本地借用期间它不在服务端可用池里。借用默认有效期最长两周左右可以配短一点。核查时要专门查一下有没有被借走但项目已经结束的那些守住不放的授权等于凭空少了几个并发。lmstat 的输出里会单独列出借用中的条目翻一下就知道。另一个是僵尸占用。客户端崩溃、断电、强制结束进程服务端不会立即感知要等心跳判定或者手动干预。这期间日志上那条 checkout 记录一直挂着看起来就像有人在用。判断方法把日志里持续时间明显偏长的全部挑出来比如超过 24 小时的 fluent 会话然后去对应的机器上核实。核实下来真有人的是使用习惯问题核实下来没人的就是回收机制的问题需要在客户端侧做定期检查而不是干等服务端自动清理。FlexNet 里确实有超时回收相关的配置项但能不能生效取决于 vendor daemon 的实现ANSYS 并没有把所有模块的这个开关都开放出来所以别把它当唯一的回收手段。3. 实操用许可管理器做一轮完整核查3.1 ANSLIC_ADMIN 与 lmutil 的常用动作服务端有两条路GUI 走 ANSLIC_ADMIN命令行走 lmutil。GUI 适合做服务启停和看日志命令行适合做批量采集和自动化。两个工具在同一个目录下Windows 一般在 ANSYS Inc\Shared Files\Licensing\winx64Linux 在 ansys_inc/shared_files/licensing/linx64。日常核查用到的命令其实就几个。# 查看全部模块的授权与占用情况输出的信息量最大 lmutil lmstat -a -c 1055licsrv01 # 只看某一个模块比如 fluent输出更干净 lmutil lmstat -f fluent -c 1055licsrv01 # 诊断客户端连接问题会逐项告诉你哪里走不通 lmutil lmdiag -c 1055licsrv01 # 查看 vendor daemon 的状态与版本 lmutil lmstat -c 1055licsrv01 -vlmdiag 这个命令值得单独说一下很多人不知道它的存在。它会模拟一次完整的许可获取流程把失败原因逐层报出来是连不上服务器、还是服务器上没有这个模块、还是模块过期、还是数量用完了。排查 failover feature not available 这类报错时先用它跑一遍能省掉一半的猜测。ANSLIC_ADMIN 这边有几个操作要格外小心我用粗体标出来。Reread license file只是让服务端重新读一遍授权文件已经发出去的许可不受影响适合替换授权文件后使用。Restart license manager会停掉整个服务所有在用会话全部断开正在跑的求解器会直接报错退出。我见过有人为了刷新一个新模块随手点了 Restart结果整个部门的作业全挂了。顺序一定要记牢只改了文件内容用 Reread改了服务配置或端口才需要 Restart而且必须提前通知。注意任何一次 Reread 或 Restart 之前先把当前的 license 文件和日志各备份一份。出问题时能立刻回滚这比事后翻日志快得多。3.2 读懂 debug log判断占用是否合理日志是核查的核心证据。打开 debug 日志在 ANSLIC_ADMIN 的配置里可以打开注意它会快速增长能看到类似这样的行10:23:45 (ansyslmd) OUT: fluent zhangsanws-023 10:58:12 (ansyslmd) IN: fluent zhangsanws-023 11:07:03 (ansyslmd) OUT: mechanical lisiws-041OUT 是发出IN 是收回中间的时间差就是一次占用时长。核查要做的就是把这些配对算出每个模块的占用分布然后回答三个问题。第一有没有明显超长的占用。一次 Fluent 稳态计算跑十几个小时很正常但如果某台机器上的 mechanical 连续占了三天没动静就值得问一句。第二有没有同一用户在同一时间段开多个求解器。这在日志里表现为同一个用户名、同一个模块、多条重叠的 OUT 记录。恰恰是合规检查最关心的行为——一个人占多个并发会让采购数量看起来不够实际上是使用方式的问题。第三有没有来自预期之外机器的请求。日志里会带主机名如果出现了不在资产清单里的机器名说明有人在外面接入了许可池这在内部管理上是必须问清楚的。日志还有个副作用要处理它默认会一直追加不轮转。一个中等规模的团队几个月下来日志能涨到几个 GB写盘变慢会直接拖累响应速度进而出现 connection timed out。我的做法是按天切分保留最近三十天历史数据压缩归档。这个动作本身也是合规检查的一部分因为它保证了数据可读、可比对、可追溯。3.3 输出一份拿得出手的核查报告数据采完之后得能说清楚。我用过一份比较顺手的模板字段不多但每个都能对应到一个决策。模块名称授权数量平均并发峰值并发利用率借用中超限次数结论fluent3018.23461%37高峰不足建议加购 4 并发mechanical259.61638%00富余可考虑与其他部门共享hfss87.4893%112常态化排队优先加购electronics_desktop41.1328%00使用率低核实是否有闲置账号这张表的价值在于它把技术数据和采购决策连起来了。利用率低于 50% 的先查有没有闲置账号和借用未归高于 90% 的直接进加购清单中间的看超限次数决定。报告里还要附两样东西。一是授权文件与合同清单的差异说明逐条写清楚文件里有但合同没有合同里有但文件没有版本不一致这三种情况这部分需要商务同事一起确认。二是本周期内发生过的异常事件比如某天服务重启导致的大面积报错、某次主机 ID 变更、某次授权文件替换这些都要留痕否则数据上的尖刺没法解释。4. 热词里的高频故障从合规视角逐个拆4.1 failover feature 不可用与 electronics_desktop 的一串报错先把原理讲清楚。故障转移特性是 FlexNet 里的一种机制作用是让某个模块在授权池里额外保留一份专属授权平时不参与正常分配当主授权出问题时它会接管。它对可用性要求高的场景有意义但它的存在必须体现在授权文件里不是配置能变出来的。出现 failover feature ansys electronics_desktop is not available. no valid flex 这类报错按下面顺序排查。第一步直接翻授权文件找这个模块名。用文本编辑器搜索 electronics_desktop看对应的 INCREMENT 行有没有以及这一行里有没有故障转移相关的标记。找不到行说明这个特性压根没授权只能走商务渠道。第二步对一下主机 ID。故障转移行往往也绑定了主机如果服务端主机 ID 变过换网卡、加虚拟网卡、驱动异常这一行就会失效报错和没有授权长得一模一样。第三步检查 vendor daemon 版本。新版本的模块要求较新的 ansyslmd老版本守护进程会直接拒绝。这条在升级 ANSYS 主程序但没升级许可管理器时特别常见。第四步注意 Electronics Desktop 的特点。这个软件启动时会一次性申请一串模块电子桌面主模块、HFSS、Maxwell、Mechanical 相关模块可能都会被拉起。任何一个拿不到整体启动就失败而报错信息通常只显示第一个失败的。所以看到一条 failover 报错别急着下结论用 lmdiag 或者 lmstat 把涉及到的模块挨个验一遍找到真正缺的那个。4.2 connection timed out 与许可服务器高负载客户端提示 connection timed out while reading data应用停止等待服务器响应还可能带着服务器可能负载高或有临时中断稍后再试的描述。这个报错的信息量其实很大它明说了两种可能负载高或者临时中断。顺着这两条走就行。负载高的排查。登录服务端看 CPU 和磁盘队列特别是磁盘的写入延迟。许可服务器的负载不来自计算来自日志写入和请求响应所以瓶颈经常在磁盘而不是 CPU。如果日志文件已经很大写一条记录要等一次磁盘 flush请求积压到一定程度就会超时。把日志轮转做起来这一类超时会直接消失大半。另外如果服务端跑在虚拟化环境里宿主机上的其他负载会间接影响它有条件的话给这台机器单独的资源保障。临时中断的排查。看服务有没有意外重启日志里会有服务的启动记录。常见原因是有人手动点了 Restart或者服务配置里的自动恢复策略在捣乱或者杀毒软件把守护进程的文件锁了。网络层面的检查也别跳过。客户端到服务端要通两个端口主调度端口和 vendor daemon 端口。如果防火墙只放通了主端口正常运行看不出来一旦调度换到另一个端口就断。DNS 解析慢也会贡献超时在客户端 hosts 里把服务端名字写死是最省事的一招。还有一个容易被忽略的连锁反应超时之后客户端会重试重试会堆积连接进一步加重服务端负担形成雪崩。所以一旦出现大面积超时先在客户端侧控制重试频率同时核查有没有人在短时间内疯狂提交任务。4.3 安装卸载残留、主机 ID 异常与文件夹报错这三类问题经常纠缠在一起也是最容易在合规检查里制造假象的。安装许可管理器时报文件夹错误常见原因有四个安装路径里带了中文或特殊字符路径过长嵌套目录超过了系统上限当前账户权限不足写不进 Program Files上一次安装的残留文件被占用删不掉也覆盖不了。处理顺序是先清残留、再用纯英文短路径、以管理员身份运行安装程序。主机 ID 读到 ffffffff 这类异常值前面提过根源基本在网络适配器。补充几个具体动作把虚拟网卡、蓝牙网卡、停用的网卡都禁掉只留实际联网的那块确认这块网卡有正常的物理地址用系统命令核对一遍读取结果然后重新生成主机 ID走流程换授权文件。别忘了同步更新资产台账写清楚何时、为什么、改成什么下次别人接手时才不会一头雾水。彻底卸载这件事值得单独列个检查清单因为卸不干净会导致重装后仍然连不上许可卸载程序里把所有 ANSYS 组件都移除不只是主程序到服务列表里确认许可管理器服务已经删除到任务管理器里确认 lmgrd 和 ansyslmd 没有残留进程清理环境变量 ANSYSLMD_LICENSE_FILE、ANSYS_LOCK、LM_LICENSE_FILE删除安装目录和 ProgramData 下的 ANSYS 相关目录清理临时目录里遗留的许可相关文件重启机器之后再装最后说一句计算中途关电脑这件事。从合规角度看正确做法是先在求解器里正常停止或保存退出让客户端主动把许可还回去再关机。直接断电或者强行结束进程许可会挂在服务端一段时间日志上留下一条超长占用记录既影响同事使用也污染你的统计数据。如果确实需要暂停长时间计算优先用求解器自带的暂停或断点续算能力而不是关机。5. 把合规做成日常机制而不是一年一次的突击5.1 制度、流程、工具三条腿突击检查最大的问题是数据不全、结论不准而且每次都要重新沟通一遍。想把这件事变轻得靠三样东西撑着。制度上明确几件事谁是许可服务器的唯一管理员新增模块由谁审批人员变动、设备更换、项目结项时的许可回收责任人是谁。这些不用写成厚厚的手册一页纸说清楚就行关键是有人对结果负责。流程上把几个关键节点卡住。新员工入职申请账号时同时记录需要哪些模块别一上来全给设备更换或重装系统前先确认主机 ID 是否会变会变就提前走授权更新项目结项时检查有没有借用出去的许可需要归还软件版本升级前先核对授权文件的版本上限能不能覆盖。工具上前面提到的定时快照脚本就是核心配合一个简单的汇总脚本把每天的 lmstat 输出压成一行统计数据。再往下走一步可以设定阈值告警某个模块连续三次采样利用率超过 95%就发一封邮件。这套东西搭起来大概半天工作量之后每个季度出报告只需要十几分钟。5.2 季度自查清单把动作固定成清单执行的时候不用动脑这是我用过最有效的办法。检查项检查方法通过标准授权文件与合同一致拉模块清单逐条比对无缺失、无多余、版本匹配到期日是否临近查看文件中的到期字段剩余时间大于三个月服务端进程状态查看服务与日志启动记录无异常重启日志体积与轮转查看日志目录大小单个文件不超过设定上限并发峰值与利用率汇总采样数据无常态化超限借用记录查看借用中的条目无过期未归还客户端环境变量抽查不少于十台指向正确且无冲突主机 ID 台账比对服务端实际值与台账记录一致版本分布统计客户端版本不超过授权版本上限卸载残留抽查近期重装过的机器无残留服务与进程6. 踩过的坑和几条实操心得6.1 几个容易忽略的细节时间同步。服务端和客户端的时间差得太远会导致授权被误判为过期或者日志时间戳对不上没法配对。所有机器都挂到统一的时间服务上这事看着小出问题的时候能让人查一整天。备份不只是备份文件。授权文件和日志都要备份但更要备份主机 ID 记录和模块清单快照。换人接手时一份能看懂的台账比一堆文件有用得多。别把许可服务器装在自己的工作站上。工作站会关机、会重装、会换硬件每一次都可能让整个团队的仿真停摆而且主机 ID 一变全套授权都要重新走流程。共用账号是最大的统计污染源。多人共用一个账号跑求解器日志上看起来是一个人占了多个并发实际是多个人的行为。既让数据失真也让责任没法追溯。Reread 之后要验证。替换授权文件后别只看服务端没报错就完事一定要从客户端实际取一次许可特别是新增的模块验证通过才算完成。6.2 我个人常用的两个小技巧第一个是把 lmstat 的输出直接转成可读的并发曲线。做法很简单从每天的快照里抓出Users of 模块名那一行的计数按时间戳写进 CSV用表格软件画个折线就行。比起看一堆原始文本曲线能一眼看出高峰在哪个时段、是持续性的还是脉冲式的。脉冲式的用排队解决持续性的才需要加购。第二个是给每一次服务端变更建一条记录格式就三行什么时候、改了什么、谁批准的。刚开始觉得多余直到有一次替换授权文件后部分模块失效靠这条记录五分钟就定位到了是文件里少了一段直接回滚解决。没有这条记录的话大概率要把整个流程重走一遍。许可合规这件事做久了我发现它跟做仿真挺像输入数据的质量决定结论的可信度边界条件设不清楚算出来的东西就没法用。把采集做细、把台账做清楚、把变更留痕剩下的就是例行公事。真到了要跟采购谈加购的那一天你手上有一份四周的并发曲线和一张超限次数表比说十句大家反映不够用都管用。