许可证错误

分类:错误解决数据库 | 2026-02-01
CAE visualization for license failure - technical simulation diagram

许可证错误

🙋

老师,「License not available」无法启动。


许可证错误的理论基础

许可证管理的基本概念

🙋

许可证错误是指软件无法启动时显示的"许可证不可用"之类的消息吗?

🎓

这只是其中一种情况,但CAE中更复杂。例如,Ansys和Abaqus使用"基于令牌"或"浮动许可证"机制。许可证服务器管理的"令牌数"决定了可以同时使用求解器(例如Ansys Mechanical APDL)的数量。如果有10个令牌,第11个人启动时会出错。

🙋

令牌数是如何决定的?使用1000个内核的HPC计算和仅1个内核的笔记本电脑计算消耗相同数量的令牌吗?

🎓

很好的观点。实际上,许多供应商采用"分区"的概念。例如,在Ansys HPC包中,根据使用的求解器核心数令牌消耗量会变化。基本上每核消耗1个令牌,但使用128个核或更多时,消耗令牌数可能会有"上限"的合同。另一方面,在Abaqus中,"SIMULIA Execution Engine"许可证是单独需要的,它控制并行计算的可用性。

🙋

许可证文件的内容只是简单的"允许你使用"信息吗?

🎓

内容相当复杂。通常采用FlexNet Publisher(旧FLEXlm)机制,许可证文件(.lic)包含SERVER行、VENDOR行以及FEATURE行或INCREMENT行。例如,INCREMENT ANSYS_ADMIN ansyslmd 1.000 permanent 10 SIGN="XXXX"这一行表示"Ansys_ADMIN"功能永久提供10个令牌。"SIGN"部分是加密签名,防止篡改。

许可证错误的数值计算方法

许可证检查的算法

🙋

软件启动时如何询问许可证服务器"我可以使用吗"?

🎓

客户端(如Ansys Workbench)尝试通过TCP/IP连接到由环境变量(LM_LICENSE_FILE或ANSYSLMD_LICENSE_FILE)指定的服务器(例如27000@license-server.univ.ac.jp)的27000端口。运行在服务器上的"许可证管理器守护程序(lmgrd)"接收请求,检查所需FEATURE的可用令牌数。虽然该通信协议是私有的,但使用Wireshark可以观察请求和响应的流程。

🙋

在夜间运行批处理作业时,作业进入队列的时间和实际计算开始的几小时后,许可证获取的时间点如何处理?

🎓

这是"许可证预留"的问题。在PBS Pro或Slurm等作业调度器中,通常在脚本中使用ansys195 -liccheck等选项进行启动前检查,而实际许可证获取在计算执行后进行。如果在排队时获取许可证,其他人就无法使用,资源效率会恶化。在Ansys的"共享内存并行(SMP)"和"分布式内存并行(DMP)"中,许可证检查的时间也略有不同。

🙋

如果网络瞬间断开,许可证会怎样?我听说客户端每5分钟发送一次"我还活着"的信号。

🎓

完全正确。这被称为"心跳"或"许可证租赁"。客户端定期(默认为3分钟间隔)向服务器发送存活信号。服务器会将5分钟内未收到信号的客户端判断为"死亡",并回收(释放)令牌。此超时时间可以通过服务器配置文件(选项文件)中的TIMEOUTALL 3600(秒)进行更改。在网络不稳定的环境中,通常会设置更大的值。

许可证错误的实践应用

错误发生时的检查清单

🙋

出现"Failed to connect to license server"错误。首先应该检查什么?

🎓

系统地检查。首先,测试从客户端PC到许可证服务器的网络连接。在命令提示符中使用ping license-server(主机名)看是否有响应。接下来,检查许可证服务器的27000端口是否开放,使用telnet license-server 27000。如果失败,怀疑服务器机器的防火墙设置(Windows Defender防火墙或iptables)。在服务器上使用netstat -an | findstr :27000(Windows)或ss -ltn | grep 27000(Linux)检查监听状态。

🙋

网络似乎连通。出现"No such feature exists"错误时怎么办?

🎓

这是要求的功能(FEATURE)未在许可证文件中定义或名称错误的情况。例如,在Ansys 2023R1中要求"ANSYS" FEATURE,但许可证文件太旧,没有"ANSYS"定义就不行。在服务器上执行lmstat -a -c @license-server,显示可用FEATURE列表及其"count:"数。检查所需功能(例如ANSYS、ANSHPC_PACK)是否已列出。还要检查客户端版本与许可证文件版本的兼容性。

🙋

出现"License server does not support this version"。兼容性规则是什么?

🎓

FlexNet的一般规则是,许可证文件的版本必须"等于或高于客户端软件版本"。对于Ansys,2023R1客户端需要2023R1或更新日期的许可证文件。相反,旧客户端(2021R2)使用新许可证文件(2023R1)在许多情况下是可能的。许可证文件日期由供应商提供的"发布密钥"更新。这个错误通常是由于许可证文件更新被遗忘而发生。

🙋

许可证管理器的日志在哪里查看?

🎓

默认日志文件路径很重要。在Windows上是C:\Program Files\ANSYS Inc\Shared Files\Licensing\logs\debug.log,在Linux上是/usr/ansys_inc/shared_files/licensing/logs/debug.log。由于日志文件会变得很大,需要定期删除或轮转。日志输出级别由许可证管理器的启动选项(-log logfile_path)或选项文件中的DEBUGLOG行控制。出错时,日志末尾数十行应显示以"OUT/IN:"开头的通信记录或"DENIED"关键字。

许可证错误的软件比较

主要CAE供应商的许可证体系

🙋

Ansys、Abaqus、COMSOL的许可证机制差别很大吗?

🎓

是的,架构不同。Ansys和Abaqus(达索系统)主要使用前述基于FlexNet的浮动许可证。相比之下,COMSOL使用"COMSOL许可证管理器",这是独有的。一个大的区别是,COMSOL没有明确区分"节点锁定"和"浮动",一个许可证文件可以在两种模式下运行。此外,Ansys通过"HPC包"销售并行计算能力,但COMSOL对核心数的限制更宽松,一个许可证可用的最大核心数是固定的。

🙋

免费学生版(Ansys Student)或研究机构折扣许可证的机制不同吗?

🎓

差别很大。Ansys Student是完全的节点锁定型,不需要许可证服务器,而是根据机器的硬件ID进行激活。它对问题数和网格数有限制(例如,结构分析限于32,000个节点以下)。研究机构的"Ansys Academic"与完整版相同,但许可证文件中有ACADEMIC标志,禁止商业使用。用这些许可证创建的结果文件头会标记"Academic",商业许可证可能无法打开。

🙋

开源求解器(CalculiX、OpenFOAM)没有许可证错误吧?

🎓

商业许可证管理器导致的错误没有,但有另外的"许可证"问题。例如,OpenFOAM采用GPL v3许可证。用它开发的自定义求解器在公司内部使用没有问题,但如果向外部分发(包括销售),可能需要披露源代码。CalculiX的许可证混合了GPL许可的部分(库)和专有许可证。也就是说,"法律许可证遵守"这个不同层面的错误风险是存在的。

许可证错误的故障排除

具体的错误消息和对策

🙋

出现"All licenses are in use",但用lmstat查看时似乎有空闲令牌。为什么?

🎓

最可能的是"许可证残留"。客户端崩溃或网络断开导致许可证未正常释放,服务器上的令牌仍然处于"使用中"状态。对策是首先在服务器上执行lmstat -a,识别使用的用户和主机。然后,管理员使用lmremove命令强制释放。例如lmremove ANSYS 。在某些情况下,重新启动许可证管理器本身(执行lmdown -c @license-server -force然后重新启动lmgrd)更可靠。

🙋

出现"Invalid host."错误。这是主机名改变时发生吗?

🎓

完全正确。许可证文件开头的SERVER 27000行中的必须与许可证服务器机器的正确主机名(完全合格域名FQDN最佳)匹配。如果更改了主机名或DNS设置改变,就会发生此错误。还需要检查主机ID(通常是MAC地址)是否已更改。在Linux上使用hostnameip addr show,在Windows上使用hostnameipconfig /all查看物理地址,与许可证文件信息对比。

🙋

"Clock skew detected"错误是什么?

🎓

这是许可证服务器和客户端机器系统时间偏差过大时的错误。FlexNet许可证管理器使用系统时间来检查许可证过期等,通常不允许超过几分钟的偏差。对策是在两台机器上启用NTP(网络时间协议)服务,并与同一时间服务器同步(例如ntp.nict.jp)。特别是在虚拟机(VMware、VirtualBox)上,如果主机和客户机的时间同步设置关闭,时间会立即偏差。

🙋

可以配置许可证服务器冗余(故障转移)吗?

🎓

可以。FlexNet有"许可证服务器三重配置"机制。环境变量LM_LICENSE_FILE中用分号分隔的多个服务器指定。例如27000@server1;27000@server2;27000@server3。客户端首先尝试连接server1,失败后自动故障转移到server2、server3。但这仅是针对服务器故障的备份,与多个服务器间共享许可证令牌的"许可证复制"不同。许可证复制需要更昂贵的"FlexNet Publisher高可用性选项"。

本文评分
感谢您的反馈!
有帮助
需要
更多细节
报告
错误
有帮助
0
需要更多细节
0
报告错误
0
由NovaSolver贡献者编写
匿名工程师与AI — 网站地图
查看个人资料